CNode

对于mongodb自动生成的_id如何查询?

问答
Jjackson18发布于12 年前最后回复10 年前15 回复56784 浏览0 收藏

利用mongo0se取得是null, User.findOne({_id:id},function(err,doc){.... 2014-10-25_222556.png

查看回复

回复 (15)

Z
zemug#1·12 年前

var ObjectID = require('mongodb').ObjectID; User.findOne({_id:ObjectID(id)},function(err,doc){....

Z
zemug#3·12 年前

我没有用mongoose,我用的是原生的mongodb api,id需要用ObjectID封装一下,mongoose应该有api直接传字符串的id

J
jiangli373#5·12 年前

你确定查询的时候id不是空的吗,或者数据库中就没有这条记录

N
njaulj#6·12 年前

mongoose 中 schema 定义的mongoose.Schema.Type 是 ObjectID吗

A
alsotang#7·12 年前

是不是数据表名不一样导致无数据?什么条件都不传能查到吗

J
jackson18#8·12 年前
引用 jiangli373你确定查询的时候id不是空的吗,或者数据库中就没有这条记录

@jiangli373 数据库中有相应记录,我现在改成id由自己自定义产生,这样可以查出来了。对于ObjectID(id)看了好久api也无解。

J
jackson18#9·12 年前
引用 njauljmongoose 中 schema 定义的mongoose.Schema.Type 是 ObjectID吗

@njaulj 恩,是这问题,之前写的是String,改成这样是可以找到了。不过修改时如果把id带回去会报:500 Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters.

1
119786155#11·12 年前

QQ20141102-1.png

QQ20141102-2.png

D
dayuoba#12·11 年前
> db.Users.find({"_id":ObjectId("54fd4c7102886ede83e02d28")})
{ "_id" : ObjectId("54fd4c7102886ede83e02d28"), "name" : "foo" }
F
fangker#14·10 年前
引用 fangker@zemug 测试

@fangker 自己

S
sunfeng90#15·10 年前

今天也遇到同样的问题,MongoDB更新的时候,用自己定义一个deviceid作为主键来操作,发现不对,看来不能有两个主键。另外想吐超,Mongo里面的id好长啊,如何自定义为类型

参与回复
登录后即可参与回复。登录