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