为什么我不能用字符串查询MongoDB id字段?

时间:2015-07-07 11:54:57

标签: mongodb

如果我希望通过id访问文档,而我碰巧知道id是:557afc91c0b20703009f7ede,为什么我需要使用ObjectId函数来查询数据库,如下所示:

db.mydocs.find(ObjectId("557afc91c0b20703009f7ede"))

而不是显然更明显:

db.mydocs.find("557afc91c0b20703009f7ede")

或:

db.mydocs.find({_id: "557afc91c0b20703009f7ede"})

2 个答案:

答案 0 :(得分:4)

来自mongodb documentation

  

ObjectId是一个12字节的BSON类型

因此ObjectId不是字符串。你实际在做的是从它的字符串表示构建这个12字节的对象。

答案 1 :(得分:0)

因为在db中插入一行时,会以ObjectId格式生成一个id,而不是列名为_id的字符串。