【发布时间】:2016-03-11 08:28:02
【问题描述】:
此代码使用循环到 $unset "value" 数组中所有嵌入文档的 "checked" 属性,然后是 $set 当条件评估为 true 时的属性。
但是当条件为真时,更新块无法通过设置检查来更新嵌入文档:“检查”,我知道因为meteor:PRIMARY> db.radioOptions.find({}).pretty(); 前后给出了相同的结果。
我做错了什么?以及如何解决?谢谢
meteor:PRIMARY> db.radioOptions.find({}).pretty();
{
"_id" : "jXQcsXtedQYotKQXG",
"name" : "optionType",
"value" : [
{
"name" : "1stOption",
"caption" : "1st Option"
},
{
"name" : "2ndOption",
"caption" : "2nd Option"
}
]
}
var doc = RadioOptions.findOne({name: obj.name});
if (typeof doc != 'undefined') {
doc.value.forEach(function (embdoc) {
console.log(embdoc);
RadioOptions.update(
{name: obj.name, 'value.name': obj.value},
{$unset: {'value.$.checked': ""}}
);
if (embdoc.name == obj.value) {
console.log(obj.name + " " + obj.value); //obj.value = 1stOption for example
RadioOptions.update(
{name: obj.name, 'value.name': obj.value}, //obj.name = "optionType"
{$set: {'value.$.checked': "checked"}}
);
}
})
}
【问题讨论】:
标签: javascript mongodb meteor mongodb-query