我有一个如下添加的文档
{
"bookingReference": "225360",
"portOfDestination": "TRKSP",
"contactPerson": "FAHRI YUMUSAK TRANS.",
"cargoDetails": [
{
"quantity": "123",
"unitType": "123",
"cargoDescription": "123",
"cargoGrossWeight": 123
}
],
"passengerDetails": [
{
"quantity": "123",
"unitType": "123",
"passengerDescription": "123"
},
{
"quantity": "1234",
"unitType": "1234",
"passengerDescription": "1234"
}
]
}
问题是我想将 contactPerson 添加到数组 PassengerDetails 中的每个对象。 所以添加后数组passengerDetails应该看起来像
"passengerDetails": [
{
"quantity": "123",
"unitType": "123",
"passengerDescription": "123",
"contactPerson": "FAHRI YUMUSAK TRANS."
},
{
"quantity": "1234",
"unitType": "1234",
"passengerDescription": "1234",
"contactPerson": "FAHRI YUMUSAK TRANS."
}
]
我可以通过 $addFields 来实现此目的,当乘客详细信息数组为空/空/不存在时就会出现问题。我希望应创建passengerDetails 的单个对象并将其添加到passengerDeails 中。最终结果应该是。
"passengerDetails": [
{
"contactPerson": "FAHRI YUMUSAK TRANS."
}
]
如果我使用 $addFields 那么对于后面的情况 mongo 会生成类似的东西
"passengerDetails":
{
"contactPerson": "FAHRI YUMUSAK TRANS."
}
请帮忙解决这个问题
我尝试使用 addFields 但我的所有用例都没有得到满足。
你的
passengerDetails
是一个数组字段。您可以使用 $map
迭代项目,并使用 $mergeObjects
设置 contactPerson
的字段
db.collection.update({},
[
{
$set: {
passengerDetails: {
$map: {
input: "$passengerDetails",
as: "pd",
in: {
$mergeObjects: [
"$$pd",
{
"contactPerson": "$contactPerson"
}
]
}
}
}
}
}
],
{
multi: true
})