我已經嘗試了以下 mongoose 查詢,但它似乎不起作用:
Model.findOneAndUpdate(
{
name: origin
},
{
$set: {
'field1.$[id1].field2.-1': "value"
}
},
{
arrayFilters: [
{ 'id1.userId': "customerId" }
],
new: true
}
);
注意:
field1andfield2是陣列
MongoDB 不接受負索引,這會導致問題。
uj5u.com熱心網友回復:
您可以考慮使用$set(聚合)運算子并使用雙$map運算子:
db.collection.aggregate([
{ $match: { name: "myname" } }
{
$set: {
field1: {
$map: {
input: "$field1",
in: {
$cond: {
if: { $ne: [ "$$this.userId", "customerId" ] },
then: "$$this",
else: {
$mergeObjects: [
"$$this",
{
field2: {
$concatArrays: [
{ $slice: [ "$$this.field2", { $add: [ { $size: "$$this.field2" }, -1 ] } ] },
["value"]
]
}
}
]
}
}
}
}
}
}
}
])
蒙戈游樂場
uj5u.com熱心網友回復:
在更新中應用 $set 運算子和 $ 位置運算子以更改名稱欄位。
$ 位置運算子將識別陣列中要更新的正確元素,而無需明確指定元素在陣列中的位置,因此您的最終更新陳述句應如下所示:
db.collection.update(
{ "friends.u.username": "michael" },
{ "$set": { "friends.$.u.name": "hello" } }
)
答案取自 - https://stackoverflow.com/a/34431571
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/389732.html
