好吧,所以我有一个名为Polls的系列。在民意调查"表"有一个名为choiceObjects
的属性,它是一个对象数组。此数组中的每个对象都有自己的属性。我需要做的是更新那里的一个属性。我给你一个屏幕截图,这样你就可以更好地想象我在说什么
正如您所看到的,选择对象具有诸如body,country等属性。还有另一个名为pollid的属性,它被设置为可选,因此您现在无法看到它。我现在需要更新此pollid
属性pollid
Polls.update(
{ _id: pollId },
{ "$set": { "choiceObjects": { pollid: pollId } } }
); //this is kind of what Im trying to do but this isnt right
此后......我进一步尝试了以下内容:
var selectedpoll = Polls.findOne(pollId);
console.log(selectedpoll);
//Polls.update( selectedpoll, {"$set"{'choiceObjects.$.pollId':pollId}},false, true );
但是当我尝试我得到错误时:位置操作员没有找到查询所需的匹配。未扩展更新:choiceObjects。$。pollId
答案 0 :(得分:0)
如果我正确理解您的目标,您希望将pollid
更新(或添加)到choiceObjects
数组中的所有对象。遗憾的是,$
,$push
,$addToSet
仅适用于单个元素AFAIK。
这可能不是你想要的,但解决这个问题的一种可能而且非常明显的方法是更新集合中的整个数组,即
var choiceObjects = Polls.findOne({_id: pollId}).choiceObjects;
for (var i = 0; i < choiceObjects.length; i++) {
choiceObjects[i].pollid = pollid;
}
Polls.update({_id: pollid}, {choiceObjects: choiceObjects});