使用嵌套数组查找MongoDb



假设我有这种收集

{
"_id" :"A",
"title" : "TITLE1",
"brand" : [ 
{
"brand_id" : "B",
"varients" : [ 
{
"name" : "RED ",
"price" : 5.0
}
]
}, 
{
"brand_id" : "C",
"varients" : [ 
{
"name" : "GREEN",
"price" : 5.0
}
]
}, 
{
"brand_id" : "D",
"varients" : [ 
{
"name" : "Others",
"price" : 0.0
}
]
}
],
}

然后,我想选择一个并且只选择变体的嵌套数据。尝试了以下语句,但没有成功。

db.testing.findOne(  {_id: "A", "brand.brand_id" : 'D'} )

预期输出

"varients" : [ 
{
"name" : "Others",
"price" : 0.0
}
]

使用findOne,您无法在响应中获得文档的子集或嵌套内容,但是的,使用聚合,您可以以您想要的方式获得

查看此聚合管道:

[
{
'$match': {
'_id': 'A'
}
}, {
'$unwind': {
'path': '$brand'
}
}, {
'$match': {
'brand.brand_id': 'D'
}
}, {
'$project': {
'varients': '$brand.varients', 
'_id': 0
}
}
]

最新更新