【发布时间】:2016-02-19 20:49:06
【问题描述】:
我有这样的文档结构
{
"_id" : "3:/content/somepath/test.txt",
"_revisions" : {
"r152f47f1daf-0-2" : "c",
"r152f48413c1-0-2" : "c",
"r152f4851bf7-0-1" : "c"
}
}
我的任务是查找所有符合以下条件的文档:
- “_id”需要以“5:”开头
- 修订数量必须完全大于 3
第一部分很简单,我已经解决了
db.nodes.find( {'_id': /^5:/} )
但我在第二部分苦苦挣扎,应该使用$gt。
由于我是 MongoDB 新手,所以我首先看的是 $size,但 _revisions 不是数组,是子文档,对吧?
也在看$unwind,然后计算结果,但这也没有意义,因为我的结果需要是符合上述两个条件的文档。
高度赞赏的任何指针。
【问题讨论】:
-
更好的设计是让您的
_revisions字段成为一个子文档数组。类似"_revisions":[{"key":"r...","value":"c"}]。关键是以这样一种方式设计您的模式,即您触发的 90% 的查询可以轻松获取结果,而无需涉及复杂的客户端或服务器端逻辑。此外,将键名设置为predefined attributes和 not 动态/散列字符串是更好的设计。 -
@BatScream 这是我在回答中提到的,但 OP 似乎想使用
$gt运算符而不更改其文档结构,这在此处是不可能的。
标签: mongodb mongodb-query