MongoDB嵌套文档查询

时间:2018-01-20 05:44:35

标签: mongodb mongoose

我在mongodb查询时遇到了麻烦 我的目标文件:

inline-block

我试图查询所有文件..在这个文件中,文件中的某些东西会有照片,如果存在的话,想把具有属性认可的照片等于真......但我必须携带所有文件,那些谁有照片,而那些不..我试图使用聚合,项目,放松,但我还没有得到任何好结果:( 我需要的结果如下:

[
{
    "_id": "5a2ca2227c42ad67682731d4",
    "name": "name",
    "photos": [
        {
            "_id": "5a2ca22b7c42ad67682731d5",  
            "approved": false,
            "text":"good"
        },
        {
            "_id": "5a2ca72b0a1aa173aaae07da",
            "approved": true,
            "text":"bad"
        }
    ]
},
{
        "_id": "4v2ca2227cad676821731d4",
        "name": "name"
}
]
谢谢你!

1 个答案:

答案 0 :(得分:1)

您可能需要$unwind全部包括不存在的照片数组才能获得结果

db.ph.aggregate(
    [   
        {
          $unwind:
            {
              path: "$photos",            
              preserveNullAndEmptyArrays: true
            }
        },
        {
            $match : {"photos.approved" : {$ne : true} }
        }
    ]
)

结果

{
    "_id" : "5a2ca2227c42ad67682731d4",
    "name" : "name",
    "photos" : {
        "_id" : "5a2ca22b7c42ad67682731d5",
        "approved" : false,
        "text" : "good"
    }
}
{ "_id" : "4v2ca2227cad676821731d4", "name" : "name" }
>