我遇到了这样一种情况,需要动态更新子文档中字段的值。该字段可能已经存在,也可能不存在。如果它不存在,我希望Mongo创建它。
下面是一个示例文档,可以在我的Teams
集合中找到,该集合用于存储给定团队的成员:
{
_id : ObjectId('JKS78678923SDFD678'),
name : "Bob Lawblaw",
status : "admin",
options : {
one : "One",
two : "Two"
}
}
这是我正在使用的查询(我使用 mongojs 作为我的Mongo客户端),尝试更新(或创建)options
子文档中的值:
var projectID = 'JKS78678923SDFD678';
var key = 'Three';
var value = 'Three';
Teams.findAndModify({
query: {
projectID:mongojs.ObjectId(projectID)
},
update: {
$set : { options[key] : value }
},
upsert: true,
multi: false,
new: true
},
function(error, result, lastErrorObject){
console.log(result);
});
但是我无法将值进行“upsert”操作。
我还发现了类似的问题,但那种方法也没有起作用: Nodejs Mongo insert into subdocument - dynamic fieldname
非常感谢您的任何帮助。
$set
对象的相同方法。 - JohnnyHK$set
操作符从placeholder
对象中移出时,就得到了所需的解决方案,它起作用了。是的,在这里需要直言不讳。有太多人急于捞回一些甜蜜的失败者积分,施行他们的清洁服务,而他们应该把时间花费在仔细阅读问题上。 - AJB