查询mongoDB中另一个数组内的整个特定数组

时间:2019-06-07 22:20:45

标签: mongodb

我有一个名为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"
          }
       ]

1 个答案:

答案 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
     }
  }
])