如何通过MongoDB驱动程序(node.js)将属性(属性名称是可变的)添加到对象中
How to add a property (property name is variable) to object via MongoDB driver (node.js)
我的文档在集合中的结构是这样的。
{
"_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) {...})
此行向文档中添加一个新对象,该对象的名称为属性
usercontent.update({userName: "some_user"}, {$set: {ratings: ratings}}, function (err, doc) {...})
这个正是我所需要的,但每次运行时,它都会用一个新的属性重写当前属性(是的,我知道,这是因为$set参数会用你传递给它的东西更改所选对象)
我需要一个函数,它可以向通过变量
如此:
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
函数。
相关文章:
- 选中单选框时将属性添加到输入字段
- 将css属性添加到对象的集合中
- 用javascript向数组(?)中的特定属性添加值
- AngularJs,在没有隔离的情况下将指令属性添加到作用域
- 如何将enctype属性添加到FormData()对象中
- 如何将属性添加到自定义角度指令
- 如何将额外的属性添加到bootstrapTable中
- 在 Javascript 生成的列表中,如何将自定义属性添加到 标记
- 将动态属性添加到对象末尾
- 向 JSON 对象属性添加引号
- 将地理 JSON 要素属性添加到地图框弹出窗口
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- 将自定义属性添加到 vuejs 组件
- 将属性添加到带有href链接但没有#的元素
- 将属性添加到数组中的所有对象
- Jquery将data-rel属性添加到所有输入字段,并移除name属性
- 将属性添加到窗元素时是否引发事件
- 将onsubmit属性添加到表单并提交
- 将属性添加到数组中的每个对象
- 如何使用jQuery向属性添加值