过滤子文档数组

时间:2017-02-15 15:54:35

标签: mongodb mongodb-query aggregation-framework

db.doc.find({},{"sections.rows.Desk":1})返回办公桌列表,但也是空行,即行数组中不存在desk属性...

我想消除空洞的结果。怎么去呢?

谢谢!

我的文档“doc”具有以下格式。     “文档”:     {

    "sections" : [
        {
            "name" : "Request Details", 
            "rows" : [
                {
                    "Desk" : "IT4"
                }
            ]
        }, 
        {
            "name" : "Approval", 
            "rows" : [
                {
                    "Approval" : ""
                }
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

您必须使用聚合框架,尤其是$unwind运算符,才能查询单个数组元素并获取您所追求的元素。目前,.find的工作方式与整个文档匹配时,您将获得整个文档。

db.docs.aggregate({$unwind: "$sections"}, {$match: {"sections.rows.Desk": {$exists: 1}}});