我收藏的文件结构是这样的。
{
"_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驱动程序的函数 是的,我知道“属性名称为字符串”的东西,我可以将变量传递给属性名称。这是我试图做的:
var rating = {};
var title = 'some_string';
ratings[title] = [];
usercontent.update({userName: "some_user"}, {$set: ratings}, function (err, doc) {...})
此行向文档添加一个名为property
的新对象usercontent.update({userName: "some_user"}, {$set: {ratings: ratings}}, function (err, doc) {...})
并且这个完全符合我的需要,但每次运行时,它都会用新的属性重写当前属性(是的,我知道,因为$ set参数改变了所选对象和你通过的东西它)
我需要一个函数,它使用通过变量
给出的名称向对象添加属性答案 0 :(得分:2)
像这样:
var t = "property_name"
var field_name = "ratings." + t
var update = { "$set" : { } }
update["$set"][field_qname] = []
db.usercontent.update({ "userName" : "some_user" }, update)
构造正确的点符号字段名称,然后构造正确的$set
更新表达式,然后将其传递给update
函数。