MongoDB,选择内部数据计数大于零的所有条目

时间:2013-10-07 09:57:13

标签: mongodb

我有类似这样的东西。

{
    "title" : "",
    "source" : {
        "object" : "some",
        "group" : "some
        "data" : []
    }
}

“source.data”或“source”可能完全没有定义。

所以现在我需要选择所有有计数的对象(xxx.source.data)> 0。我该怎么做这个查询?我搜索count()和xxx.length(方法\属性),但仍然无法理解如何在我的情况下使用它们。

添加了:

.find({"source.data": {$exists: true, $size: {$gt: 1}}})

1 个答案:

答案 0 :(得分:3)

您可以按照以下方式执行此操作:

db.myObject.find({$and:[{"source.data":{$exists:true}},{"source.data":{$not:{$size:0}}}]})

从mongoDB文档中,它说$size运算符不接受范围查询。

  

$ size不接受值范围。选择基于的文档   具有不同数量的元素的字段,创建一个计数器字段   在向字段添加元素时增加。

对于更大的查询,您可以使用列表索引。您可以使用以下查询来查找数据大小>的文档。 10。

db.myObject.find({$and:[{"source.data":{$exists:true}},{"source.data.10" : {$exists:true}}]})