按id查找子文档

时间:2016-03-12 09:49:39

标签: node.js mongodb express mongoose

他们,在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);
        }
    });
}

0 个答案:

没有答案