$和查询返回没有结果
好吧这一个是杀了我。也许它迟到了,我忘记了一些东西,但这应该起作用。
出于测试目的,我的收藏中有大约6000个文档。有一个名为Priority
的属性,在每个实例中它的值都是2。
以下两个查询都返回所有 6000文件:
{
Priority: {
$gt: 1
}
}
和
{
Priority: {
$lt: 10
}
}
这个查询,但是,返回0的结果,并根据解释,做的全扫描全部6000个文件:
{
$and: [
{
Priority: {
$gt: 1
}
},
{
Priority: {
$lt: 10
}
}
]
}
有我错过了什么?
如果我说“我需要一个可以坐四个人的汽车和一辆可以坐8人以上的汽车的人”,那么坐在8个人身上的单车的人通常不会被理解为符合要求。你和查询只能通过一个入口与优先值,小于10一个,比1
的docs for and更大的一个满足有一个链接到的MongoDB的multikey semantics。
不错的例子! :-) – 2012-01-07 05:08:50
好吧 - 它有点误导,但我明白你在说什么。我简化了我在这个问题中的实际问题,期待不同的答案。我可能会创建一个更详细的新问题。谢谢。 – 2012-01-07 05:34:33
如果你可以帮忙,我已经发布了一个后续问题:http://*.com/questions/8767747/combine-two-or-statements – 2012-01-07 05:59:57
您不应该在这里使用$and
。
相反,你可以重写查询是这样的:
{Priority: {$gt: 1, $lt: 10}}
再次,用了不到100点的用户巨魔互联网留下无用的意见和贡献什么。当然,我阅读文档。不过,感谢您的帮助。 – 2012-01-07 15:22:41