猫鼬计划:
var restsSchema = new Schema({
name: String,
menu: mongoose.Schema.Types.Mixed
});
simplfied document:
{
name: "Dominos Pizza",
menu:{
"1":{
id: 1,
name: "Plain Pizza",
soldCounter: 0
},
"2":{
id: 2,
name: "Pizza with vegetables",
soldCounter: 0
}
}
}
我正在尝试在给出单个/数组“菜单项”(例如上面文档中的“1”或“2”对象)时更新soldCounter,如下所示:
function(course, rest){
rest.markModified("menu.1");
db.model('rests').update({_id: rest._id},{$inc: {"menu.1.soldCounter":1}});
}
一旦这可行,我显然会想让它更通用,例如:(这种语法不起作用,但证明了我的需要)
function(course, rest){
rest.markModified("menu." + course.id);
db.model('rests').update({_id: rest._id},{$inc:{"menu.+"course.id"+.soldCounter":1}});
}
任何人都可以帮忙解决这个问题吗?
我找了一个答案,但在第3级找不到任何答案。
更新 在ducument的subDocument中添加了id
答案 0 :(得分:1)
我认为您希望将所有ID添加到子文档中,您可以按照以下方式执行此操作。
Rest.find({_id: rest._id}, function(err, o) {
// add all ids into sub-document...
Object.keys(o.menu).forEach(function(key) {
o.menu[key].id = key;
});
o.save(function(err){ ... });
});
看来你想在查询中操作密钥,恐怕你不能这样做。
请参阅以下问题。
Mongodb - regex match of keys for subobjects
MongoDB Query Help - query on values of any key in a sub-object