Mongodb findOne不起作用

时间:2015-03-04 16:51:46

标签: mongodb

我第一次使用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

有人有想法吗?

1 个答案:

答案 0 :(得分:7)

尝试:

db.games.find({"_id" : ObjectId("54f7364d1f2f9378d7a5ddde")})

密钥_id中存储的数据类型为ObjectId,您正在搜索字符串。所以你的类型不匹配。 MongoDB没有自动将String转换为ObjectId。如果您将数字存储为Long,但在查询中输入整数,则也会发生此错误。