关于$和操作的混淆

时间:2012-03-28 18:23:18

标签: mongodb mongodb-php

遵循MongoDB文档示例似乎是错误的。

有什么建议吗?

a == 1且> 5将永远不会匹配任何文档。

Link

db.foo.find( { $and: [ { a: 1 }, { a: { $gt: 5 } } ] } )

在上面的示例中,将返回a元素值等于1且值大于5的文档

1 个答案:

答案 0 :(得分:2)

您在示例中缺少导入行:

db.foo.insert( { a: [ 1, 10 ] } )
db.foo.find( { $and: [ { a: 1 }, { a: { $gt: 5 } } ] } )

插入内容会为您提供如下所示的记录:

{"a" : [1, 10] , 
 "_id"  : "497ce4051ca9ca6d3efca323"}

因此,find将返回任何结果,其中a == 1且a的值也大于5.在这种情况下,a可以是两个值:http://www.mongodb.org/display/DOCS/Multikeys

a为1,同时为10.因此,此查询将返回此结果。