我第一次使用Mongodb并且我得到了一个非常奇怪的错误..我有一个'游戏'集合,我无法使用_id查询进行搜索..
我直接尝试mongo shell,这就是结果:
> db.games.count()
0
> db.games.insert({created:'ok'})
WriteResult({ "nInserted" : 1 })
> db.games.find()
{ "_id" : ObjectId("54f7364d1f2f9378d7a5ddde"), "created" : "ok" }
> db.games.findOne({_id:'54f7364d1f2f9378d7a5ddde'})
null
> db.games.find({_id:'54f7364d1f2f9378d7a5ddde'})
>
我真的不知道发生了什么事?我在考虑_id上的一个奇怪的索引,但我什么都没发现..
> db.games.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "cobra.games"
}
]
>
这可以帮助你
> db.version()
2.6.5
有人有想法吗?
答案 0 :(得分:7)
尝试:
db.games.find({"_id" : ObjectId("54f7364d1f2f9378d7a5ddde")})
密钥_id
中存储的数据类型为ObjectId
,您正在搜索字符串。所以你的类型不匹配。 MongoDB没有自动将String转换为ObjectId。如果您将数字存储为Long,但在查询中输入整数,则也会发生此错误。