_id的简单查询与mongoose和node.js无法正常工作

时间:2014-12-22 19:45:27

标签: javascript node.js mongodb mongoose objectid

目标:

通过_id显示mongodb中的一个文档。

环境:

JavaScript,Node.js,Mongoose

所以我有这个代码......(这里是" Post" Schema的一部分)

PostSchema.statics = {
   findById: function (id, cb) {
       this.findOne({ _id : { $eq: mongoose.Types.ObjectId(id) } }).exec(cb);
   }
}

然后调用此方法的其他代码:

var Post = mongoose.model('Post');
Post.findById('54986a8b43db661a0ec827e4', function(result){
     console.log(result);
});

我收到错误:无法在ObjectId

中使用$ eq

我在mongodb引擎中直接尝试了查询 db.posts.find({_ id:{$ eq:ObjectId(' 54986a8b43db661a0ec827e4')}}); 但不是在猫鼬......

所以我不知道如何通过id来查询!

1 个答案:

答案 0 :(得分:1)

它不起作用,因为$eq是一个聚合运算符。只需使用直接比较:

PostSchema.statics = {
   findById: function (id, cb) {
       this.findOne({ _id : id }).exec(cb);
   }
}

你不需要从id中创建一个ObjectId,因为Mongoose会为你做那个演员。

但是你甚至不需要自己创建这个方法,因为内置的findById方法会做同样的事情。