Как я могу удалить нулевые элементы из этого массива с помощью updateMany? У меня есть много документов по этому шаблону с нулевыми значениями, и я хочу обновить их все без нулевых значений.
{
"car": "Honda",
"color": [
null,
null,
null,
null,
null,
null,
null,
null,
null,
"red",
"orange"
]
}
Я попытался
db.db_urls.updateMany({color: null}, { $unset : { color: 1 }})
но он удаляет содержимое всех полей
update({},{"$pull": {"color": {"$eq": null}}},{"multi": true}) попробуйте это, если вы все еще застряли, я думаю, вам это нужно

Вариант 1. Использование конвейера агрегации внутри запроса update() с $filter:
db.collection.update({
color: {
$exists: true,
$eq: null
}
},
[
{
$addFields: {
color: {
$filter: {
input: "$color",
as: "c",
cond: {
$ne: [
"$$c",
null
]
}
}
}
}
}
],
{
multi: true
})
Объяснение:
Вариант 2. Удалить все нулевые элементы в массиве цветов с помощью $pull:
db.collection.update({
color: {
$exists: true,
$eq: null
}
},
{
$pull: {
color: null
}
},
{
multi: true
})
Объяснение:
Я бы использовал вариант 2, так как он выглядит просто, но в некоторых случаях для больших коллекций операция $pull может выполняться медленнее, поэтому лучше протестировать...
Отвечает ли это на ваш вопрос? Удаление нулевых объектов из json в mongodb