如何通过MongoDB驱动程序(node.js)添加一个属性(属性名是variables)

我collections的文档结构就是这样。

{ "_id" : ObjectId("54e74de2950fd3a4e5f0a37a"), "userName": "Any_user", "ratings": { "rating1" : [ ], "big_rating" : [ ] } } 

在MongoDB客户端(mongo.exe)添加我需要看起来像这样

 db.userContent.update({userName: "NXTaar"}, {$set: {"ratings.variable_name": []}}) 

我需要为MongoDB node.js驱动程序的function是的,我知道“属性名string”的事情,我可以传递variables的属性名称。 这是我试图做的:

 var rating = {}; var title = 'some_string'; ratings[title] = []; usercontent.update({userName: "some_user"}, {$set: ratings}, function (err, doc) {...}) 

这一行添加一个新的对象的文件与属性的名称

 usercontent.update({userName: "some_user"}, {$set: {ratings: ratings}}, function (err, doc) {...}) 

这一个正是我所需要的,但每次运行,它重写当前属性与一个新的(是的,我知道,这是因为$设置参数改变选定的对象与你已经传递给它的东西)

我需要一个函数,通过variables给一个名字添加一个属性

像这样:

 var t = "property_name" var field_name = "ratings." + t var update = { "$set" : { } } update["$set"][field_qname] = [] db.usercontent.update({ "userName" : "some_user" }, update) 

构build正确的点符号字段名称,然后构build正确的$set更新expression式,然后将其传递给update函数。

Interesting Posts