如何在mongodb中检查嵌套数组是否为空?

时间:2016-07-01 21:12:59

标签: mongodb

我有类似下面的内容:

{
        "_id" : "1",
        "firstArray" : [
                {
                        "_id" : "11",
                        "secondArray" : [ ]
                },
                {
                        "_id" : "12",
                        "secondArray" : [ ]
                },
                {
                        "_id" : "13",
                        "secondArray" : [ { "type" : "somthing" } ] 
               }
        ]

},
{
        "_id" : "2",
        "firstArray" : [
                {
                        "_id" : "21",
                        "secondArray" : [ ]
                },
                {
                        "_id" : "22",
                        "secondArray" : [ ]
                }
        ]

}

我需要一个mongodb查询来查找所有嵌套的secondArrays为空的文件?查询应返回第二个文档,而不是第一个文档。

1 个答案:

答案 0 :(得分:0)

要解决这个问题,我们需要检查arr2的大小,但要启用它我们需要先解开arr1。

请在下面找到解决此问题的聚合框架片段,

db.pmoubed.aggregate([{
            $unwind : "$firstArray"
        }, {
            $project : {
                _id : 1,
                firstArray : 1,
                isNotEmpty : {
                    $size : "$firstArray.secondArray"
                }
            }
        }, {
            $group : {
                _id : "$_id",
                isNotEmpty : {
                    $sum : "$isNotEmpty"
                },
                firstArray : {
                    $push : "$firstArray"
                }
            }
        }, {
            $match : {
                "isNotEmpty" : 0
            }
        }

    ])

欢迎提出任何意见