匹配父文档和子文档后修改子文档

时间:2014-12-11 21:49:11

标签: node.js mongodb mongoose nosql

我有一个场景,我有一个文件,里面有一个子集合。现在,我想修改/更新子集合中的一个子文档。我想在修改子文档之前先匹配父文档和子文档。 我正在使用mongoose / node.js和MongoDB

这是我的架构: -

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var HostSchema   = new Schema({

    aid         :       String,
    cars        :       [{
                                carid : String,
                                status_code: Number                 
                        }]
});

module.exports = mongoose.model('Host', HostSchema);

这是我的代码: -

router.route('/xxx/').post(function(req, res) {

    Host.findOne({
        _id : req.body.xid
    }, {
        cars : {
            carid : req.body.yid
        } 
    }, function(err, host) {
        if (err) {
            res.send(err);
        } else {
            // What to do?
        }
    });
});

我可以打印整个子集合,但我想只打印一个与子集合匹配的文档。 我的目标是修改子集合文档中的status_code字段

1 个答案:

答案 0 :(得分:0)

  

我的目标是修改文档中的status_code字段   子集合

您需要使用$位置运算符来更新与查询匹配的子文档。

Host.update({"_id":req.body.xid,"cars.carid":req.body.yid},
            {$set:{"cars.status_code":50}},function(err,numEffected){
            console.log(numEffected);
})