【发布时间】: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