看起来这两个查询应该相同但结果却不一样。为什么带有$和运算符的第二个findOne查询与第一个查询相同?
$ mongo
MongoDB shell version: 2.0.2
connecting to: test
> db.test.drop()
true
> db.test.insert({ x: 1, y: 2 })
> db.test.findOne({ x: 1, y: 2 })
{ "_id" : ObjectId("4f0885cd61d25fd4a5813ae2"), "x" : 1, "y" : 2 }
> db.test.findOne({ $and: [{ x: 1 }, { y: 2 }] })
null
我在Mac OS X 10.6.8上使用通过Homebrew安装的MongoDB 2.0.2
答案 0 :(得分:1)
没关系,这是因为我最初通过自制软件安装mongodb 1.8.2,然后我将其升级到2.0.2,但我没有将新的plist文件复制到位,所以launchctl仍然启动1.8。 2。您可以看到这一点,因为当您通过shell连接时:
$ mongo
MongoDB shell version: 2.0.2
这就是说你使用的是客户端版本2.0.2。但如果你运行这个:
> db.serverStatus()
在输出的某处你会看到:
"version" : "2.0.2"
服务器运行的版本是哪个。它之前说1.8.2,现在它说2.0.2。