在MongoDB中,文档具有以下结构:
[{
"_id" : ObjectId("5caba072e9157250d2d411c6"),
"products" : [],
"categories" : [
{
"_id" : ObjectId("5cb0e1ac3525485a3dde8336"),
"name" : "Category Name",
"title" : "Category Title",
"description" : "",
"products" : [],
"picture" : ObjectId("5cab9ff6e9157250d2d411c2")
"subCategories" : [
{
"_id" : ObjectId("5cb0e1ac3525485a3dde8337"),
"name" : "Sub Category Name",
"title" : "Sub Category Title",
"description" : "Description",
"picture" : ObjectId("5caba013e9157250d2d411c3")
"products" : [
{
"picture" : [
ObjectId("5caba028e9157250d2d411c4"),
ObjectId("5caba02fe9157250d2d411c5")
],
"buttonStatus" : true,
"_id" : ObjectId("5cb0e1ac3525485a3dde8338"),
"title" : "Title ",
"subtitle" : "Sub title",
}
],
}
],
}
],
"createdAt" : ISODate("2019-04-08T19:26:42.671Z"),
"updatedAt" : ISODate("2019-04-12T19:06:20.552Z"),
"__v" : 3,
"qrcode" : ObjectId("5caba074e9157250d2d411ca")
},
... // Other Documents
]
基本上,我的架构是在三级层次结构中定义的,即
我必须将所有产品合并到一个列表中,并根据产品ID放置过滤器。以下是我开始的查询
Product.aggregate([
// Get all the matching documents.
{
$match: {
$or: [
{
'products._id': {
$in: ids
}
}, {
'categories.products._id': {
$in: ids
}
}, {
'categories.subCategories.products._id': {
$in: ids
}
}
]
}
}
]
我尝试了$ addToSet,$ push,但是在子类别的情况下失败了。任何帮助将不胜感激,这让我理解了这个概念。