我有一个集合,其中包含如下数据:
[{
_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,则创建该字段,否则不创建。