MongoDb:查询嵌套文档数组

时间:2018-09-20 10:48:17

标签: mongodb mongodb-query

我已将此文档插入db.references馆藏中:

{
   "idRef":"asdf-ggtt-001",
   "metadades":[
      {
         "departament":"JUST",
         "changed": ISODate("2016-02-10T10:50:42.389Z")
      },
      {
         "ambit":"AMB1"
      }
   ]
}

因此,我想知道哪些文档metadades.changed,其中metadades是嵌套文档的数组。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

对于完整文档(带有嵌套文档的父文档):

db.references.find({"metadades.changed": {$exists: 1}}).pretty()

这基本上将产生所有文档,其中至少一个嵌套文档具有已更改的字段。

如果您只希望匹配的嵌套文档:

db.references.aggregate([
{
    $unwind: {
        path: "$metadades"
    }
},
{
    $match: {
        "metadades.changed": {$exists: 1}
    }
},
{
    $replaceRoot: {
        "newRoot": "$metadades"
    }
}
])