Mongodb 更新的$sert、$unset(聚合)中是否可以使用相同的字段
我回答 我无法解释同一字段不能按Mongodb 更新的$sert、$unset(聚合)中是否可以使用相同的字段,mongodb,Mongodb,我回答 我无法解释同一字段不能按set然后unset的顺序在update(aggregate)中使用的原因 db.getCollection('name').update({ "bid": "3860" }, { [ { "$set": { "tl": { $add: [ { $multiply: [
set
然后unset
的顺序在update(aggregate)
中使用的原因
db.getCollection('name').update({
"bid": "3860"
},
{
[
{
"$set": {
"tl": {
$add: [
{
$multiply: [
"$intField",
24*60*60*1000
]
},
"$dateField"
]
}
}
},
{
"$unset": 'intField' //Here
}
]
}
})
乍一看,这似乎是正确的。由于提到了聚合运算符[]
,我相信$set
可以使用该$intField
,然后它可以$unset
db.getCollection('name').update({
"bid": "3860"
},
{
[
{
"$set": {
"tl": {
$add: [
{
$multiply: [
"$intField",
24*60*60*1000
]
},
"$dateField"
]
}
}
},
{
"$unset": 'intField' //Here
}
]
}
})
请帮助我理解这一点。您可以在更新聚合管道的
$set
和$unset
阶段中使用相同的字段
查询中存在语法错误。.update()
函数的第二个参数应该是数组而不是对象。去掉[]
周围的大括号,查询就可以了
db.getCollection('name').update(
{"bid": "3860"},
[
{
"$set": {
"tl": {
$add: [
{
$multiply: ["$intField", 24*60*60*1000 ]
},
"$dateField"
]
}
}
},
{ "$unset": 'intField' }
]
);
即使我在
{}
中提供了[]
,它是如何工作的?如果在使用更新聚合时将对象作为第二个参数传递,我认为它不起作用。在中给出的所有示例都将数组作为第二个参数而不是对象传递。