我试图将新项目添加到任何ID下传入的名称。我的第一个问题是它似乎没有从我的任何变量(name,item,id)中获取值,而只是将它们用作对象键。我的下一个问题是,当我通过硬编码样本表信息进行测试时,它并没有向该数组添加更多项目,而只是用我在这里的任何值替换整个数组。
function addlist(name, item, id){ // Add to user's list
console.log(id);
db.collection('newcon').update({_id: id}, { "$set": { "$push": { name:item } } });
ret(id);
}
答案 0 :(得分:2)
$set
不是数组更新操作。
$ set运算符用指定的值替换字段的值。
您只想自己使用$push
,例如
.update({_id: id}, {$push: {name: item}})
您无法在原始对象声明中插入对象属性名称,因此如果您想使用变量name
,则必须创建一个对象来执行此操作:
var obj = {};
obj[name] = item;
然后,您可以将其传递给.update
,{$push: obj}