在数组中查找带有空对象的mongo文档

时间:2014-07-14 19:44:12

标签: arrays mongodb

我有一个带有数组属性的Mongo集合,并且数组中包含“空”对象。我可以使用什么查询来定位只有{}的非空数组?

我尝试过$exists$where的组合无济于事。

我需要定位的数据示例:

"arrayProperty" : [ {} ]

"arrayProperty" : [ {}, {} ]

编辑:

以下是架构的示例:

{
    "_id" : ObjectId("53b1ca583d597ce7cbd54646"),
    "arrayProperty" : [ 
        {
            "serialNumber" : "abc123",
            "rfid" : "xyz098",
            "size" : 95,
            "points" : 50,
            "frequency" : "Every day",
            "dateAssigned" : ISODate("2011-02-10T15:27:39.000Z")
        }
    ]
} 

2 个答案:

答案 0 :(得分:6)

如果您正在寻找arrayProperty至少包含一个{}的文档,那么它只是:

db.collection.find({ arrayProperty: {} })

如果您希望查找只有arrayProperty 包含一个或两个{}的文档:

db.collection.find({ arrayProperty: {$in: [ [{}], [{}, {}] ] } })

答案 1 :(得分:2)

以下可能/可能不起作用......

db.collection.aggregate([
{$unwind: {"$arrayProperty"}},
{$match: {arrayProperty: {} }},
{$group: {_id: "$_id"} }
])

基本上我要做的是unwind arrayProperty,将arrayProperty作为{}group所有文件拉出来已退回的文档具有相同的_id(或者您可以使用您使用的任何唯一键字段替换它)。

同样,我不确定这是否有效,所以试试看,让我知道。