通过Node中的“_id”搜索MongoDB条目的正确方法

时间:2013-07-09 09:56:46

标签: javascript node.js mongodb

我在MongoDb中使用MongoJS(作为Node的一部分)。 Here is the documentation for MongoJS

我正在尝试根据条目的_id字段在Node中进行调用。从控制台使用vanilla MongoDB时,我可以这样做:

db.products.find({"_id":ObjectId("51d151c6b918a71d170000c7")})

它正确地返回我的条目。但是,当我在Node中做同样的事情时,例如:

db.products.find({"_id": ObjectId("51d151c6b918a71d170000c7")}, function (err, record) {
    // Do stuff
});

我得到ReferenceError: ObjectId is not defined

这样做的正确协议是什么?

5 个答案:

答案 0 :(得分:102)

在使用之前需要使用ObjectId函数:

var ObjectId = require('mongodb').ObjectID;

答案 1 :(得分:1)

如果您使用的是MongoJS,您可以这样做:

var ObjectId = mongojs.ObjectId;

然后,

db.users.find({"_id": ObjectId(id)}, function(err, user){...}

答案 2 :(得分:1)

如果您使用的是猫鼬,可以试试这个:

var mongoose = require('mongoose')
usersSchema = mongoose.model('users'),
mongoose.Types.ObjectId("<object_id>")

usersSchema.find({"_id": mongoose.Types.ObjectId("<object_id>")}, function (err, record) {
// Do stuff
});

答案 3 :(得分:1)

您还可以分解ObjectId和MongoClient来优化代码并使代码更具可读性。

const { MongoClient, ObjectId } = require('mongodb');

答案 4 :(得分:0)

这是使用猫鼬时利用objectId的另一种方法。

// at the top of the file
const Mongoose = require('mongoose')
const ObjectId = Mongoose.Types.ObjectId;

// when using mongo to collect data
Mongoose.model('users', userSchema).findOne({ _id: 
    ObjectId('xyz') }, function (err, user) {
        console.log(user)
        return handle(req, res)
    })
})