2024-05-22 18:38:29 +08:00

87 lines
2.5 KiB
JavaScript

db.demo.updateMany(
{
"d_id": "100"
},
[
{
$addFields: {
elem_index: {
$indexOfArray: [
"$logs.e_id",
"1000"
]
}
}
},
{
$set: {
version: {
$add: ["$version", 1]
},
update_time: new Date(),
}
},
{
$set: {
logs: {
$cond: {
if: {
$lt: ["$elem_index", 0]
},
then: {
$concatArrays: [
"$logs",
[
{
e_id: "1000",
update_time: new Date(),
version: "$version",
deleted: false
}
]
]
},
else: {
$map: {
input: {
$range: [0, {
$size: "$logs"
}]
},
as: "i",
in: {
$cond: {
if: {
$eq: ["$$i", "$elem_index"]
},
then: {
e_id: "1000",
update_time: new Date(),
version: "$version",
deleted: false
},
else: {
$arrayElemAt: ["$logs", "$$i"]
}
},
},
},
},
},
},
},
},
{
$unset: ["elem_index"]
},
]
)