Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.0k views
in Technique[技术] by (71.8m points)

mongodb - Programmatically updating fields in Mongo and Meteor

I have a collection that I'd like to update. The field is given programmatically, so I'd like to do something like this:

var update_string = 'coordinates.lat';
var update = function(value, id, update_string) {
  Collection.update({_id:id}, {$set:{update_string:value}})
}  

That however does not work and just sets "update_string" to have value {{value}} in the object with _id {{id}} in the Collection. I also tried doing var update_string = "'coordinates.lat'"; to no avail.

How do I accomplish this? Thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to set the key in your update $set parameter correctly:

var update = function(value, id, update_string) {
   var update_query = {};
   update_query[update_string] = value 
   Collection.update({_id:id}, {$set:update_query})
}  

Basically without the modification above, If you used {update_string:value} you would be setting the value of update_string, not coordinates.lat.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...