Mongodb mongo更新从数组复制的$set值

Mongodb mongo更新从数组复制的$set值,mongodb,mongodb-query,Mongodb,Mongodb Query,有人能告诉我在同一文档中设置数组字段值的语法吗?也就是说,考虑到: { "MyArray" : [ 1, 2, 3 ] } 我需要把它更新到 { "MyArray" : [ 1, 2, 3 ], "NewValue" : 3 } MongoDB的update不支持将字段设置为来自同一文档的值。您只能传入常量。在您的示例中,您实际上没有设置MyArray。你的意思是想$set另一个字段Array2:[1,2,3]?如果你只想得到数组的最后一个值:db.test.find({“MyArray”:

有人能告诉我在同一文档中设置数组字段值的语法吗?也就是说,考虑到:

{ "MyArray" : [ 1, 2, 3 ] }
我需要把它更新到

{ "MyArray" : [ 1, 2, 3 ], "NewValue" : 3 }

MongoDB的
update
不支持将字段设置为来自同一文档的值。您只能传入常量。

在您的示例中,您实际上没有设置MyArray。你的意思是想$set另一个字段Array2:[1,2,3]?如果你只想得到数组的最后一个值:
db.test.find({“MyArray”:{“$exists”:true},{“MyArray”:{$slice:-1})
Jesse的权利。但是,我发现了一种使用forEach():db.test.find({“MyArray”:{$exists:true},“NewValue”:{$exists:false})的方法。forEach(函数(f){f.NewValue=f.MyArray.slice(-1)[0];db.test.save(f)})`这将完全起作用,但请注意,每个文档都必须从服务器传输到客户端,然后再传输回来,如果另一个进程同时更新相同的文档,则会出现竞争条件。@JoelSherriff您对此有参考吗?这是一项功能,还是希望将来能有所改变?我希望类似于
updateusers SET name=firstname+“”+lastname,firstname=null,lastname=null
的东西,并假设手头的问题不是数组,而是更一般的问题?跟踪记录在这里,这是计划中的功能,但不是计划中的: