#python #mongodb #mongodb-query #aggregation-framework #eve
#python #mongodb #mongodb-запрос #агрегация-фреймворк #eve
Вопрос:
Я хочу удалить пустые строки и пустые массивы в документе. Есть ли способ сделать это с помощью платформы агрегации MongoDB? Вот пример входящего документа:
"item": [{
"array_objects":[{
"text": '',
"second_text": '',
"empty_array": [],
"empty_array_2":[],
}]
}]
Ответ №1:
Если вы хотите спроецировать все поля, которые не являются пустой строкой или пустым массивом, используйте $filter
Вы можете попробовать следующий запрос агрегации:
db.collection.aggregate([
{
$unwind: "$item"
},
{
$unwind: "$item.array_objects"
},
{
$project: {
item: {
$arrayToObject: {
$filter: {
input: {
$objectToArray: "$item.array_objects"
},
cond: {
$and: [
{
$ne: [
"$$this.v",
""
]
},
{
$ne: [
"$$this.v",
[]
]
}
]
}
}
}
}
}
}
])