我有四个不同的文档,它们具有相同的CId,这是另一个id,表示所有文档都是该ObjectId文档的子集。
主
{ "_id" : ObjectId("582c5211c8a8e06c0849a238"), "name" : "MyName", "code" : "1234", "__v" : 0 }
亚群
{ "_id" : ObjectId("584e72fc28a15d7c1ae0b3de"), "CId" : ObjectId("582c5211c8a8e06c0849a238"), "no_m" : 3, "create_date" : ISODate("2016-12-12T09:50:52.948Z"), "update_date" : ISODate("2016-12-19T14:22:28Z"), "__v" : 0}
{ "_id" : ObjectId("584e72fc28a15d7c1ae0b3df"), "CId" : ObjectId("582c5211c8a8e06c0849a238"), "no_m" : 3, "create_date" : ISODate("2016-12-12T09:50:52.948Z"), "update_date" : ISODate("2016-12-19T14:22:28Z"), "__v" : 0}
{ "_id" : ObjectId("584e72fc28a15d7c1ae0b3dg"), "CId" : ObjectId("582c5211c8a8e06c0849a238"), "no_m" : 3, "create_date" : ISODate("2016-12-12T09:50:52.948Z"), "update_date" : ISODate("2016-12-19T14:22:28Z"), "__v" : 0}
{ "_id" : ObjectId("584e72fc28a15d7c1ae0b3dh"), "CId" : ObjectId("582c5211c8a8e06c0849a238"), "no_m" : 3, "create_date" : ISODate("2016-12-12T09:50:52.948Z"), "update_date" : ISODate("2016-12-19T14:22:28Z"), "__v" : 0}
我想在Node.js
中找到使用monoose的所有文档我的代码是
var c = 582c5211c8a8e06c0849a238
SubsetSchema.find({'CId' : cid},function(err,Docs){
if (err)
{
console.log(err);
return res.status(400).send({"err":err});
}
});
console.log(Docs);
但它给了我错误
如何在mongoose find()
中包含ObjectId使用mongodb db.Docs.find({" CId":ObjectId(" 582c5211c8a8e06c0849a238")})正常工作
答案 0 :(得分:2)
这里不需要强制转换或使用ObjectId
构造函数,只需将其作为字符串传递,但也可能由于某些语法错误而导致错误,您需要调整代码如下:
var cid = '582c5211c8a8e06c0849a238';
SubsetSchema.find({'CId' : cid},function(err, Docs) {
if (err)
{
console.log(err);
return res.status(400).send({"err":err});
}
console.log(Docs);
});
首先 :正确定义变量以匹配c
与cid
的使用位置。
第二次 :用单引号/双引号将其指定为字符串。
第三次 :在回调函数中获取console.log
语句,其中Docs
已定义。