Javascript 使用_id查找不在mongodb中工作

Javascript 使用_id查找不在mongodb中工作,javascript,mongoose,Javascript,Mongoose,我有一个名为Releases的集合,其中包含一个名为product的子文档。 我的收藏如下: { "_id": ObjectId("5b1010e4ef2afa6e5edea0c2"), "version": "abc", "description": "<p>abc</p>\n", "product": { "_id": ObjectId("5b100c9949f43c6b6f10a93f"), "name": "Product 1",

我有一个名为Releases的集合,其中包含一个名为product的子文档。 我的收藏如下:

{
 "_id": ObjectId("5b1010e4ef2afa6e5edea0c2"),
  "version": "abc",
  "description": "<p>abc</p>\n",
  "product": {
    "_id": ObjectId("5b100c9949f43c6b6f10a93f"),
    "name": "Product 1",
    "description": "<p>abc</p>\r\n",
    "image": "Product 1.png",
    "__v": 0
  },
  "releasedate": ISODate("2018-05-30T00:00:00Z"),
  "__v": 0
}
   var mongoose = require('mongoose');
   var Schema = mongoose.Schema;

   var Product = new Schema({
   _id: Schema.Types.ObjectId,
   name: String,
   description: String,
   image: String,
   });
   module.exports = mongoose.model('Product', Product);
但是如果我使用console.log(releases),它会给我一个空数组 我已经被这件事困扰了一段时间,并向你们寻求帮助。我做错了什么。我阅读了上的文档,并试图将其应用到我的代码中,但我无法使其正常工作

我的模式如下所示:

{
 "_id": ObjectId("5b1010e4ef2afa6e5edea0c2"),
  "version": "abc",
  "description": "<p>abc</p>\n",
  "product": {
    "_id": ObjectId("5b100c9949f43c6b6f10a93f"),
    "name": "Product 1",
    "description": "<p>abc</p>\r\n",
    "image": "Product 1.png",
    "__v": 0
  },
  "releasedate": ISODate("2018-05-30T00:00:00Z"),
  "__v": 0
}
   var mongoose = require('mongoose');
   var Schema = mongoose.Schema;

   var Product = new Schema({
   _id: Schema.Types.ObjectId,
   name: String,
   description: String,
   image: String,
   });
   module.exports = mongoose.model('Product', Product);

您需要将
id
从string更改为mongoose
objectId

var id = req.body.productId
   var query = {'product._id' : mongoose.Types.ObjectId(req.body.productId)};
   Release.find(query)
   .select('_id version description product releasedate')
   .sort({releasedate: 1 })
   .exec()
   .then(releases => {
     console.log(releases);
     res.status(200).json(releases);
   })

您确定您的id(
req.body.productId
)是正确的,并且是ObjectId或等于
5b100c9949f43c6b6f10a93f
)的字符串吗?@rphonika感谢您的回复。是的,我仔细检查了它,也许一个解决方案是在ObjectId中转换您的id:
var id=mongoose.Types.ObjectId(req.body.productId)
。这就成功了!非常感谢你!如果你愿意,你可以回答这个问题,我将把它标记为解决方案。否则我会用你的解决方案来回答。