【发布时间】:2022-10-25 09:59:46
【问题描述】:
我试图把这个
{
"fooList" : [
{
"bar" : {
"baz" : 100
}
},
{
"bar" : {
"baz" : 200
}
}
]
},
{
"fooList" : [
{
"bar" : {
"baz" : 300
}
},
{
"bar" : {
"baz" : 400
}
}
]
}
进入这个:
{
"fooList" : [
{
"baz" : 100,
"bar" : {
"baz" : 100
}
},
{
"baz" : 200,
"bar" : {
"baz" : 200
}
}
]
},
{
"fooList" : [
{
"baz" : 300,
"bar" : {
"baz" : 300
}
},
{
"baz" : 400,
"bar" : {
"baz" : 400
}
}
]
}
如您所见,我实际上只是将baz 及其值从bar 中复制出来,但我的问题是它发生在数组中。
db.getCollection(<collection_name>).updateMany(
{},
{ $set: { 'fooList.$[element].baz' : '$fooList.$[element].bar.baz' } },
{ upsert: true ,
arrayFilters: [{'element.bar' : { $exists : true }}]
}
)
但这只会将字符串$fooList.$[element].bar.baz设置成baz,通过结果可以看出这里
[
{
"_id": ObjectId("5a934e000102030405000000"),
"fooList": [
{
"bar": {
"baz": 100
},
"baz": "$fooList.$[element].bar.baz"
}
]
}
]
谁能告诉我我可能做错了什么,或者这是否可能?谢谢
【问题讨论】:
-
如果还不够清楚,上面的示例只是集合中的文档。
标签: arrays mongodb mongodb-query