【问题标题】:Modify sub documents after matching parent document and sub document匹配父文档和子文档后修改子文档
【发布时间】:2015-02-10 12:54:31
【问题描述】:

我有一个场景,我有一个文档,里面有一个子集合。现在,我想修改/更新子集合中的子文档之一。我想在修改子文档之前先匹配父文档和子文档。 我正在使用 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字段

【问题讨论】:

    标签: node.js mongodb mongoose nosql


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-19
      • 2011-09-26
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 2015-08-18
      • 2023-03-20
      相关资源
      最近更新 更多