我有一个名为myCollection的mongoDB集合,并且在myCollection内部有一个像这样的结构:
{
"id": 1234,
"posts": [
[
{
"id": "0.0",
"name": "john",
"message": "hello"
},
{
"id": "0.1",
"name": "jane",
"message": "good morning"
},
{
"id": "0.2",
"name": "josh",
"message": "good evening"
}
],
[
{
"id": "1.0",
"name": "mark",
"message": "good lunch"
}
],
[
{
"id": "2.0",
"name": "john",
"message": "bye bye"
},
{
"id": "2.1",
"name": "mark",
"message": "hi"
}
]
]
}
谁能告诉我如何查询此结构以获得包含特定对象的整个数组? 例如,围绕该特定对象启动查询:
{
"id": "2.0",
"name": "john",
"message": "bye bye"
}
我将获得整个数组:
[
{
"id": "2.0",
"name": "john",
"message": "bye bye"
},
{
"id": "2.1",
"name": "mark",
"message": "hi"
}
]
答案 0 :(得分:1)
希望下面的查询是帮助:
db.myCollection.aggregate([
{ $match : { "id": 1234}},
{ $unwind : '$posts'},
{$match : {
'posts' : { $elemMatch : { 'id' : '2.0',name : 'john'}}
}
},
{ $unwind : '$posts'},
{ $project : {
'id' : '$posts.id',
name : '$posts.name',
message :'$posts.message',
_id : 0
}
}
])