请参阅以下文件
{
"_id" : ObjectId("594b9eb9e1b22e09f8af00ee"),
"Name" : "Master List",
"UserId" : ObjectId("594b9eb9e1b22e09f8af00ed"),
"Items" : [
{
"_id" : ObjectId("59485d9d0fd04d1294e06766"),
"Title" : "Muscle Milk Protein",
},
{
"_id" : ObjectId("59485d9d0fd04d1294e06772"),
"Title" : "Baby Macro Organic 120g",
},
{
"_id" : ObjectId("59485d9d0fd04d1294e06780"),
"Title" : "Fruit Bread Soft Strap",
}
]
}
从上面的文档中,我想要基于搜索字符串的结果,例如:" /。 Mus。 /"我应该得到以下结果,但我得到了上面的整个项目细节
{
"_id" : ObjectId("594b9eb9e1b22e09f8af00ee"),
"Name" : "Master List",
"UserId" : ObjectId("594b9eb9e1b22e09f8af00ed"),
"Items" : [
{
"_id" : ObjectId("59485d9d0fd04d1294e06766"),
"Title" : "Muscle Milk Protein",
}
]
}
我尝试了以下查询,但没有一个从Items子文档中获取匹配的标题
查询1: db.getCollection('List').find({'UserId': new ObjectId("594b9eb9e1b22e09f8af00ed"), 'Items': {'$elemMatch': {'Title': <code>{$regex:'.*uscle. *'}}}})
查询2: db.getCollection('List').find({'UserId': new ObjectId("594b9eb9e1b22e09f8af00ed"), 'Items.Title': <code> {$regex:'.*Mus. *'}})
你能帮忙吗?
提前致谢。
答案 0 :(得分:0)
使用aggregation framework $unwind,“解包”,嵌套数组。
db.getCollection.aggregate([
{
$unwind:"$Items"
},
{
$match: {
"Items.title": {
regex: /yourPattern/
}
}
}
])
希望它有所帮助!聚合在MongoDB中真的很棒。