无法查询嵌套的猫鼬数组?
Impossible to query nested mongoose array?
我想在内部使用正则表达式和猫鼬 (mongoDB) 模型进行查询和排列。
我想在 Productmodel 的嵌套数组中搜索:
const productSchema = new schema(
{
name: requiredString,
sku: requiredUniqueNumber,
ean: requiredUniqueNumber,
suppliers: [{ type: mongoose.Schema.Types.ObjectId, ref: SupplierModel }],
categories: [{ type: mongoose.Schema.Types.ObjectId, ref: CategoryModel }],
mainImage: requiredString,
images: [{ type: String }],
description: requiredString,
stock: requiredNumber,
price: requiredNumber,
totalOrders: requiredNumber,
reviews: [review],
},
{
timestamps: true,
count: true,
}
);
“供应商”数组中的模型是:
const supplierSchema = new schema(
{
supplierName: requiredUniqueString,
invoiceAddress: address,
visitAddress: address,
status: supplierStatusEnum,
contacts: address,
accountType: accountTypeEnum,
logo: requiredString,
user: { type: schema.Types.ObjectId, ref: "products" },
},
{
timestamps: true,
}
);
现在问题来了,如果我查询并且 populate()
我会得到所有结果。但出于某种原因,我无法在包含多个供应商的数组中进行搜索。这是我所拥有的:
foundProducts = await ProductModel.find({
$or: [
{
name: {
$regex: regex,
},
},
{
"suppliers.supplierName": {
$regex: regex,
},
},
{
description: {
$regex: regex,
},
},
],
});
JSON中的对象:
如果他发现供应商模型包含正则表达式,他应该返回包含该供应商的整个产品模型。
在嵌套数组中搜索所有项目的最佳方法是什么。
ps。我是一名来自 PostgreSQL 的初级开发人员,所以当我尝试这个 noSQL“东西”时,请多多包涵 :)
我做错了查询。我需要做
{
"suppliers._id": {
$regex: regex,
},
},
我只能搜索 _id,因为这是我“建模”的方式。
我想在内部使用正则表达式和猫鼬 (mongoDB) 模型进行查询和排列。
我想在 Productmodel 的嵌套数组中搜索:
const productSchema = new schema(
{
name: requiredString,
sku: requiredUniqueNumber,
ean: requiredUniqueNumber,
suppliers: [{ type: mongoose.Schema.Types.ObjectId, ref: SupplierModel }],
categories: [{ type: mongoose.Schema.Types.ObjectId, ref: CategoryModel }],
mainImage: requiredString,
images: [{ type: String }],
description: requiredString,
stock: requiredNumber,
price: requiredNumber,
totalOrders: requiredNumber,
reviews: [review],
},
{
timestamps: true,
count: true,
}
);
“供应商”数组中的模型是:
const supplierSchema = new schema(
{
supplierName: requiredUniqueString,
invoiceAddress: address,
visitAddress: address,
status: supplierStatusEnum,
contacts: address,
accountType: accountTypeEnum,
logo: requiredString,
user: { type: schema.Types.ObjectId, ref: "products" },
},
{
timestamps: true,
}
);
现在问题来了,如果我查询并且 populate()
我会得到所有结果。但出于某种原因,我无法在包含多个供应商的数组中进行搜索。这是我所拥有的:
foundProducts = await ProductModel.find({
$or: [
{
name: {
$regex: regex,
},
},
{
"suppliers.supplierName": {
$regex: regex,
},
},
{
description: {
$regex: regex,
},
},
],
});
JSON中的对象:
如果他发现供应商模型包含正则表达式,他应该返回包含该供应商的整个产品模型。
在嵌套数组中搜索所有项目的最佳方法是什么。
ps。我是一名来自 PostgreSQL 的初级开发人员,所以当我尝试这个 noSQL“东西”时,请多多包涵 :)
我做错了查询。我需要做
{
"suppliers._id": {
$regex: regex,
},
},
我只能搜索 _id,因为这是我“建模”的方式。