Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在meteor中更新嵌套集合时,如何为更新路径传递变量_Javascript_Mongodb_Meteor_Meteorite - Fatal编程技术网

Javascript 在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

更新meteor中的嵌套集合不是问题(此处描述:)

基本方法:

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}
是您尝试执行的操作的正确选择器,那么您的最后一个示例应该可以工作。

工作得很好;非常感谢:)但我不确定这与我上次尝试的区别。你能解释一下吗?太好了,我很高兴这有帮助。我看你上次的尝试没有任何问题。构建对象和使用文本应该是相同的(减去变量的使用)。也许你打错了什么。