mongoose 分组查询时用_id无法查询到数据

图片描述

我用name能查询到,用_id就不行了,啥情况。

阅读 3.3k
3 个回答

雷猴
mongodb中的_id并不是一个字符串
ObjectId 是一个12字节 BSON 类型数据,有以下格式:
前4个字节表示时间戳
接下来的3个字节是机器标识码
紧接的两个字节由进程id组成(PID)
最后三个字节是随机数。
MongoDB中存储的文档必须有一个"_id"键。这个键的值可以是任何类型的,默认是个ObjectId对象。
在一个集合里面,每个文档都有唯一的"_id"值,来确保集合里面每个文档都能被唯一标识。
可以通过

{"_id" : ObjectId("544a3dc0d4646f0c8c904962")} 

这样去查询

和你前面的 findOne 一样,用 ObjectId 包一下就好了,直接字符串是不行的

clipboard.png

Model.findById

与 findOne 相同,但它接收文档的 _id 作为参数,返回单个文档。_id 可以是字符串或 ObjectId 对象。

Model.findById(obj._id, function (err, doc){
  // doc 是单个文档
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题