查找由另一个 ObjectId 引用的嵌套文档

Find nested document referred by another ObjectId

我有四个不同的文档,它们具有相同的 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

with mongodb db.Docs.find({"CId":ObjectId("582c5211c8a8e06c0849a238")}) 正常工作

此处无需强制转换或使用 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);
});

首先:正确定义变量以匹配它使用ccid的地方。

第二个:通过用 single/double 引号将其作为字符串分配。

第三种:获取定义Docs的回调函数内部的console.log语句