他们,在Mongodatabase中存储客户订单。每个订单内部都有一个或多个用户创建的“草稿”,它们是具有自己ID的子文档。我们的想法是将它们单独提供,而不以任何方式涉及订单本身。但我无法想象如何通过id实际搜索单个子文档。
我的模型看起来像这样:
var mongoose = require('mongoose');
var orderDraftSchema = mongoose.Schema({
name: String,
color: String,
price: Number,
attributes: []
});
var orderSchema = mongoose.Schema({
date: Date,
value: Number,
status: String,
customer: {},
drafts: [orderDraftSchema]
})
module.exports = mongoose.model('Orders', orderSchema);
我的搜索结果如何?我是否还需要导出子模式?我在寻找我的辅助工具,还是父母的工作?
这种感觉非常灵活且无法解决,希望有更优雅的解决方案:
var Order = require("../models/order.js");
getDraft: function(draftId, cb) {
Order.find({
drafts: {
$elemMatch: {
_id: {
$in: draftId
}
}
}
}, function(err, results) {
if (err) {
cb('No Matching Order found!');
} else {
var drafts = results[0].drafts;
var resultDraft;
for (i in drafts) {
if (drafts[i]._id == draftId) {
resultDraft = drafts[i];
}
}
console.log(resultDraft);
cb(resultDraft);
}
});
}