Mongodb更新集合中的字段,同时自动生成另一个字段



我有一个集合,其中包含如下数据:

[{
_id: a,
createdAt: "2020-11-10",
createdBy: "test@test.com",
features: {
first: true,
second: true
}},{
_id: b,
createdAt: "2020-11-10",
createdBy: "test@test.com",
features: {
first: false,
second: true
}}]

我想插入一个新功能:第三:真正的

db.collection.update(  { _id:...} , { $set: { features.third : true  } } 

我的问题是,是否可以为其中一个特性插入一行新行,同时当mongodb看到有一个类似"的字段时;第三个";如果值为true,那么mongodb会自动生成一个新字段(featureConfig(,哪个值是空字符串?所以期望值是:

{
_id: b,
createdAt: "2020-11-10",
createdBy: "test@test.com",
features: {
first: false,
second: true,
third: true
},
featureConfig: "",
}

如有任何帮助,我们将不胜感激。

尝试此查询并检查它是否按预期工作(示例(

这是一个查询:

db.collection.aggregate([
{
"$match": {
"id": 1
}
},
{
"$set": {
"features.third": true
}
},
{
"$project": {
"features": 1,
"featureConfig": {
"$cond": {
"if": "$features.third",
"then": "",
"else": "$false"
}
}
}
}
])

两个初始阶段与您的相同,通过id进行筛选以匹配并设置值。然后,我使用$project创建了一个基于条件的字段featureConfig。如果features.third值为true,则创建该字段,否则不创建。

最新更新