我的文档结构如下:
{
key: "apples002",
main: [
{q: "Is the apple green?", a1: "The apple is not green.", a2: "No."},
{q: "What color is the apple?", a1: "The apple is yellow.", a2: "Yellow."}
],
alt: [
{q: "What color is the apple?", a1: "The apple is red."},
{q: "Is the apple yellow?", a1: “The apple is yellow.”, a2: “Yes.”}
]
}
我已经看到了几个更新子文档字段的示例,但大多数都是子文档具有唯一ID的情况。我还学习了如何通过索引来引用其中一个子文档,例如:更新主要上面的q字段(第一个元素):
myDB.update({key: 'apples002'}, {$set: {'main.0.q': 'Updated question goes here'}})
所以在我的情况下,我想用一个变量代替上面的数组索引0。我尝试使用正确的字符串值创建一个本地var并使用它代替上面的'main.0.q',但这不起作用。有什么想法吗?
答案 0 :(得分:1)
我已经调整了JohnnyHK的答案,以显示我必须做些什么才能使上述更新与索引的变量一起工作:
var setModifier = { $set: {} };
setModifier.$set['main.' + myIndex + '.q'] = 'Updated question goes here.';
PL.update({key: 'apples002'}, setModifier);
谢谢,JohnnyHK!