mongoose - 如何在 Mongoose 中填充以下格式的数据集合
问题描述
要从 Atlas 中获取的数据包含 3 个文档(Schema-categorySchema),每个文档存储另一个文档的 objectIds 数组(Schema-subCategorySchema)
{"_id":{"$oid":"5f055f4b00bde224583e35cf"},"name":"cat1","sub_categories":[],"__v":0}
{"_id":{"$oid":"5f055f5700bde224583e35d0"},"name":"cat2","sub_categories":[{"_id":{"$oid":"5f05a8633ca5a141d45c2dee"},"subcatergory_id":{"$oid":"5f05a8633ca5a141d45c2ded"}},{"_id":{"$oid":"5f05ab45f69e0435b81ff560"},"subcatergory_id":{"$oid":"5f05ab44f69e0435b81ff55f"}}],"__v":2}
{"_id":{"$oid":"5f058108f14eba3aa067e7a0"},"name":"Veg1","sub_categories":[],"__v":0}
下面提到了上述数据的模式。
const categorySchema = new Schema({ name: { type: String, required: true, }, sub_categories: [ { subcatergory_id: { type: Schema.Types.ObjectId, required: true, ref: "SubCategory", }, }, ], });
我期望填充 3 个文档以及 ObjectId 数组引用的数据。
如何为基于上述模型的获取输出编写查询?
我写了一个如下所示的查询,但它失败了。
exports.getCategoryList = (req, res, next) => {
Category.find().then((categories) => {
console.log(categories.sub_categories);
if (categories) {
res.json({ "Category List": categories.sub_categories });
} else {
res.send("Empty Category List");
}
}).catch((err) => res.send("error:" + err));
};
解决方案
您可以这样填充:
Category.find()
.populate('sub_categories._id sub_categories.subcatergory_id')
.then((categories) => {
console.log(categories.sub_categories);
if (categories) {
res.json({ "Category List": categories.sub_categories });
} else {
res.send("Empty Category List");
}
}).catch((err) => res.send("error:" + err));
或者
Category.find()
.populate('sub_categories._id')
.populate('sub_categories.subcatergory_id')
.then((categories) => {
console.log(categories.sub_categories);
if (categories) {
res.json({ "Category List": categories.sub_categories });
} else {
res.send("Empty Category List");
}
}).catch((err) => res.send("error:" + err));
推荐阅读
- acumatica - PXView 不包含 Select In Acumatica 的定义
- react-native - 更新到 expo 41 TransitionPresets 后像以前一样停止工作
- java - 将一个 xml 布局用于多个活动的最佳方式是什么?
- linux - 在每个 CREATE USER 之前添加 DROP USER 语句
- python - 在 heroku 评论应用程序中设置 python 版本
- reactjs - 如何在反应中从选择输入中获取所选值
- excel - EXCEL VBA 从 word doc 中获取材料
- c++ - 使用 tuple_cat 将参数包扩展为元组
- php - 如何将存储在变量中的日期与 SQL 中数据库中的日期进行比较?
- python - 如何在 Odoo 13 中以编程方式获取记录令牌