Javascript 在meteor中更新嵌套集合时,如何为更新路径传递变量
更新meteor中的嵌套集合不是问题(此处描述:) 基本方法:Javascript 在meteor中更新嵌套集合时,如何为更新路径传递变量,javascript,mongodb,meteor,meteorite,Javascript,Mongodb,Meteor,Meteorite,更新meteor中的嵌套集合不是问题(此处描述:) 基本方法: Collection.update({sel}, {"$set" : {"address.city": "new address"}}); 但是如果我想用变量来描述我的路径呢 这个显然不起作用: var cityName = "NYC"; Collection.update({sel}, {"$set" : {"address." + cityName: "new address"}}); 遗憾的是,这一点也不起作用: var
Collection.update({sel}, {"$set" : {"address.city": "new address"}});
但是如果我想用变量来描述我的路径呢
这个显然不起作用:
var cityName = "NYC";
Collection.update({sel}, {"$set" : {"address." + cityName: "new address"}});
遗憾的是,这一点也不起作用:
var path = "address.NYC";
Collection.update({sel}, {"$set" : {path: "new address"}});
那一个也没有:
var object = {"address.NYC": "new address"};
Collection.update({sel}, {"$set" : object});
嗯,事实上,它是有效的,但不是我想要的方式。它完全替换“address”对象,删除其他属性
有什么想法吗
有没有办法在查询部分选择我要更新的字段?它不起作用,因为您不能使用。您需要使用括号表示法并构建要在
更新中使用的对象。例如:
var city = 'NYC';
var object = {};
object["address." + city] = 'new address';
MyCollectionName.update(idOfObjectToUpdate, {$set: object});
假设集合
实际上是一个集合的名称,并且{sel}
是您尝试执行的操作的正确选择器,那么您的最后一个示例应该可以工作。工作得很好;非常感谢:)但我不确定这与我上次尝试的区别。你能解释一下吗?太好了,我很高兴这有帮助。我看你上次的尝试没有任何问题。构建对象和使用文本应该是相同的(减去变量的使用)。也许你打错了什么。