【问题标题】:Find with _id not working in mongodb使用 _id 查找在 mongodb 中不起作用
【发布时间】:2018-11-10 16:27:59
【问题描述】:

我有一个名为 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 id = req.body.productId
   var query = {'product._id' : id};
   Release.find(query)
   .select('_id version description product releasedate')
   .sort({releasedate: 1 })
   .exec()
   .then(releases => {
     console.log(releases);
     res.status(200).json(releases);
   })

但如果我使用 console.log(releases),它会给我一个空数组 我已经被这个问题困扰了一段时间,并向你们寻求帮助。我究竟做错了什么。我阅读了https://docs.mongodb.com/manual/tutorial/query-embedded-documents/ 上的文档并尝试将其应用到我的代码中,但我无法让它工作。

我的架构如下所示:

   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 (req.body.productId) 是正确的并且是 ObjectId 或等于 5b100c9949f43c6b6f10a93f 的字符串吗?
  • @rphonika 感谢您的回复。是的,我仔细检查了它
  • 也许一种解决方案是将您的 id 转换为 ObjectId:var id = mongoose.Types.ObjectId(req.body.productId)
  • 这成功了!非常感谢!
  • 如果你愿意,你可以回答这个问题,我会把它标记为解决方案。或者我会用你的解决方案自己回答。

标签: javascript mongoose


【解决方案1】:

您需要将 id 从字符串更改为猫鼬 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);
   })

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 2021-03-15
    • 1970-01-01
    • 2021-07-20
    • 2018-05-06
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多