gpt4 book ai didi

javascript - 如何通过 MongoDB 驱动程序 (node.js) 向对象添加属性(属性名称是可变的)

转载 作者:可可西里 更新时间:2023-11-01 10:03:55 26 4
gpt4 key购买 nike

我收藏的文档结构是这样的。

{ 
"_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 参数将所选对象更改为您传递的内容对它)

我需要一个函数,它向对象添加一个属性,该对象的名称通过变量给出

最佳答案

像这样:

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 函数。

关于javascript - 如何通过 MongoDB 驱动程序 (node.js) 向对象添加属性(属性名称是可变的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com