Это можно сделать только в понедельник go 4.2+, где они представили pipe'd обновления .
Теперь мы можем использовать выражения агрегации для обновления документов:
db.collection.updateOne(
{},
[
{
$set: {
"daily": {
$map: {
input: "$daily",
as: "item",
in: {
"general": {
$filter: {
input: "$$item.general",
as: "datum",
cond: {$ne: ["$$datum._id", "5e728265f4796c0017203662"]}
}
}
}
}
}
}
}
]);
Или, если у ежедневных объектов есть больше, чем просто общее поле, вы можете сделать это следующим образом:
db.collection.updateOne(
{},
[
{
$set: {
"daily": {
$map: {
input: "$daily",
as: "item",
in: {
$mergeObjects: [
"$$item",
{
"general": {
$filter: {
input: "$$item.general",
as: "datum",
cond: {$ne: ["$$datum._id", "5e728265f4796c0017203662"]}
}
}
}
]
}
}
}
}
}
]);
К сожалению, для любой другой версии Mon go это невозможно, вы придется реструктурировать ваши данные или сделать это в коде.