Mongodb更新,缺少$concat和字段

Mongodb更新,缺少$concat和字段,mongodb,Mongodb,我想更新一个集合,用其他内部字段设置一个新字段 它看起来像是生成一个人的全名 MongoDB Enterprise > db.name.find() { "_id" : ObjectId("5d7ca743c45316e35251a49e"), "first" : "Don", "middle" : "Jhon", "last" : "Trump" } { "_id" : ObjectId("5d7ca75bc45316e35251a49f"), "first" : "Dila", "la

我想更新一个集合,用其他内部字段设置一个新字段
它看起来像是生成一个人的全名

MongoDB Enterprise > db.name.find()
{ "_id" : ObjectId("5d7ca743c45316e35251a49e"), "first" : "Don", "middle" : "Jhon", "last" : "Trump" }
{ "_id" : ObjectId("5d7ca75bc45316e35251a49f"), "first" : "Dila", "last" : "Tp" }
{ "_id" : ObjectId("5d7ca76dc45316e35251a4a0"), "first" : "Li", "last" : "Wei" }
我想将全名设置为
$first
+
$middle
+
$last
更新
我尝试将update与聚合管道一起使用。这是mongodb 4.2中的一个新特性

 db.name.updateMany({},[{$set:{full:{$concat: [ "$first", "$middle","$last" ] }}}])
但当某个字段丢失时,该结果返回大量空值

db.name.find()
{ "_id" : ObjectId("5d7ca743c45316e35251a49e"), "first" : "Don", "middle" : "Jhon", "last" : "Trump", "full" : "DonJhonTrump" }
{ "_id" : ObjectId("5d7ca75bc45316e35251a49f"), "first" : "Dila", "last" : "Tp", "full" : null }
{ "_id" : ObjectId("5d7ca76dc45316e35251a4a0"), "first" : "Li", "last" : "Wei", "full" : null }

你要找的是功能。像这样重写您的查询

db.name.updateMany({},[{$set:{full:{$concat: [ {$ifNull:["$first", ""]}, {$ifNull:["$middle", ""]},{$ifNull:["$last", ""]} ] }}}])

你要找的是功能。像这样重写您的查询

db.name.updateMany({},[{$set:{full:{$concat: [ {$ifNull:["$first", ""]}, {$ifNull:["$middle", ""]},{$ifNull:["$last", ""]} ] }}}])

我还尝试使用
$cond
它也能工作,但更复杂

db.name.updateMany({},[{$set:{full:{$concat: [ "$first", {"$cond" :{if :{$gt:["$middle", null]},then :"$middle" ,else :""}},"$last" ] }}}])

如果需要的话,把它放在这里帮助别人。

我也试着使用
$cond
它也可以,但更复杂

db.name.updateMany({},[{$set:{full:{$concat: [ "$first", {"$cond" :{if :{$gt:["$middle", null]},then :"$middle" ,else :""}},"$last" ] }}}])

如果需要的话,把它放在这里帮助别人。

试试这个
db.name.updateMany({},[{$set:{$concat:[“$first”| |,“$middle”| |,“$last”| |“]}}])
@matrixersp不起作用,但它给了我很多关于这个
db.name.updateMany({},[{$set:{$full:{$concat:{$first”|,[$middle],{$concat:[$first”|,},[$middle],$last}]
@matrixersp不起作用,但它给了我很多提示