2013-07-09 22 views
30

Tôi đang sử dụng MongoDb (như một phần của MongoJS) trong Node. Here is the documentation for MongoJS.Cách đúng để tìm kiếm các mục MongoDB bằng '_id' trong Node

Tôi đang cố thực hiện cuộc gọi trong Node dựa trên trường _id của mục nhập. Khi sử dụng vani MongoDB từ giao diện điều khiển, tôi có thể làm:

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

và nó sẽ trả về một cách chính xác vào tôi. Tuy nhiên, khi tôi làm điều tương tự trong Nút, như:

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

Tôi nhận được ReferenceError: ObjectId is not defined.

Giao thức chính xác để thực hiện việc này là gì?

Trả lời

71

Bạn cần phải yêu cầu các chức năng ObjectId trước khi sử dụng nó:

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

Tôi đã sử dụng 'var ObjectId = require (" mongojs "). ObjectId;', nhưng cũng hoạt động tốt! Chúc mừng. – Jascination

+7

Hoặc ['require ('mongoose') .Schema.ObjectId'] (http://stackoverflow.com/questions/8111846/how-to-set-objectid-as-a-data-type-in-mongoose) – laggingreflex

+1

Lược đồ Mongoose không có tác dụng đối với tôi. Mongodb đã làm. – PanMan

1

Nếu bạn đang sử dụng MongoJS, bạn có thể làm:

var ObjectId = mongojs.ObjectId; 

Sau đó,

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

nếu bạn đang sử dụng mongoose bạn có thể thử điều này:

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 
}); 
Các vấn đề liên quan