0

我有这样的东西。

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

“source.data”或“source”可以完全未定义。

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

添加:

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

1 回答 1

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}}]})
于 2013-10-07T10:09:18.817 回答