如何在mongodb中设置和取消设置聚合更新?
我能做如何在mongodb中设置和取消设置聚合更新?,mongodb,Mongodb,我能做$set。我正试图在一次通话中完成$unset 可能吗?Mongo版本是4.2。有什么建议吗?你就快到了。有一个小错误,$update聚合运算符接受字符串或数组 db.getCollection('name').update({"bid":"3860"}, { [ {"$set": { "tl" : { $add : [
$set
。我正试图在一次通话中完成$unset
可能吗?Mongo版本是4.2。有什么建议吗?你就快到了。有一个小错误,
$update
聚合运算符接受字符串或数组
db.getCollection('name').update({"bid":"3860"},
{
[
{"$set":
{ "tl" :
{ $add :
[
{
$multiply: ["$intField", 24*60*60*1000]
},
"$dateField"
]
}
}
},
{ "$unset": {'intField' : 1}}
]
}
}
)
它与$unset update
运算符语法不同。它是$unset aggregate
运算符格式
此聚合管道更新将使用聚合系统变量从文档中删除
intField
字段:
db.getCollection('name').update({
"bid": "3860"
},
[
{
"$set": {
"tl": {
$add: [
{
$multiply: [
"$intField",
24*60*60*1000
]
},
"$dateField"
]
}
}
},
{
"$unset": 'int2Field' -->change here
}
]
})
我可以在$set和$unset中使用相同的字段吗?因为我使用的是相同的字段,unset成功,但$set不能正常工作expected@Mano@Yousaf你有什么想法吗?@Gibbs没有更新什么?有错误吗?从
mongo
shell运行时,它工作正常。聚合管道更新仅适用于MongoDB v4.2或更高版本。此外,您还需要尝试这样的输入文档:{“\u id”:1,“intField”:25,“dateField”:ISODate(“2020-07-16T09:43:03.954Z”)}
。另外,请注意,db.set.update
中的set
是集合的名称(您可以使用替换)。@Gibbs,生成的文档如下:{“_id”:1,“dateField”:ISODate(“2020-07-16T09:43:03.954Z”),“t1”:ISODate(“2020-08-10T09:43:03.954Z”)
。注意,intField
被删除或取消设置。是的,我有4.2版本。我在机器人3t上也试过。让我再检查一下。
db.set.update(
{ },
[
{
$set: {
t1: { $add: [ { $multiply: ["$intField", 24*60*60*1000 ] }, "$dateField" ] },
intField: "$$REMOVE"
}
}
]
)