数据库查询以过滤对象数组中的数据

时间:2019-03-21 16:01:14

标签: arrays mongodb nodes mongoose-schema

我的mongodb中有一堆以下格式的文件,我将Moongoose用作ORM。

有人可以帮我查询一下,以获取function funcName () { ... } funcname() 内包含name = abc的所有内容

文档1:

data-items.content

文档2:

{
 "title": "Some title",
 "addresse": "data",
 "data-items": { 
 "content": [
   {
   "name": "abc",
   "age": "poster5.jpg"
   },
   {
    "name": "def",
    "age": "poster5.jpg"
   },
   {
    "name": "hij",
    "age": "poster5.jpg"
   }]
 }
}

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您只需使用dot notation即可查询嵌套文档数组:

Model.find({"data-items.content.name": "abc"})

编辑:要仅获取符合您条件的子文档,可以在汇总下方使用

Model.aggregate([
    {
        $match: {
            "data-items.content.name": "abc"
        }
    },
    {
        $unwind: "$data-items.content"
    },
    {
        $match: {
            "data-items.content.name": "abc"
        }
    },
    {
        $replaceRoot: {
            newRoot: "$data-items.content"
        }
    }
])

$unwind将为您提供每个content的单个文档,而$replaceRoot会将其提升到根目录。

相关问题