47

我在. MongoDb_ 这是 MongoJS 的文档MongoJSNode

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

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

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

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

我明白了ReferenceError: ObjectId is not defined

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

4

5 回答 5

124

在使用它之前,您需要需要 ObjectId 函数:

var ObjectId = require('mongodb').ObjectID;
于 2013-07-09T10:08:13.003 回答
2

如果你使用猫鼬,你可以试试这个:

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
});
于 2017-01-12T14:29:55.727 回答
1

您还可以解构您的 ObjectId 和 MongoClient 以优化您的代码并使其更具可读性。

const { MongoClient, ObjectId } = require('mongodb');
于 2018-09-13T16:42:45.587 回答
1

如果您使用的是 MongoJS,您可以执行以下操作:

var ObjectId = mongojs.ObjectId;

然后,

db.users.find({"_id": ObjectId(id)}, function(err, user){...}
于 2016-01-18T11:05:29.097 回答
0

这是使用 mongoose 时使用 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)
    })
})
于 2019-04-20T06:05:55.387 回答