В школе дБ 200 документов. Я должен удалить каждый документ, который имеет «тип»: «домашнее задание» и самый низкий балл.Сравнить элементы массива, удалить тот, который имеет самый низкий балл
{
"_id" : 0,
"name" : "aimee Zank",
"scores" :
[
{
"type" : "exam",
"score" : 1.463179736705023
},
{
"type" : "quiz",
"score" : 11.78273309957772
},
{
"type" : "homework",
"score" : 6.676176060654615
},
{
"type" : "homework",
"score" : 35.8740349954354
}
]
}
Например, здесь
{
"type" : "homework",
"score" : 6.676176060654615
}
должны быть удалены, как оценка = 6,6 < 35,8
Я отсортирован все документы, как это:
db.students.find({"scores.type":"homework"}).sort({"scores.score":1})
Но я не знаете, как тогда удалить документ с самым низким счетом и типом: домашнее задание ??? ПРИМЕЧАНИЕ: как решить проблему, не используя метод агрегирования? Например, путем сортировки, а затем обновления.
Привет, Chridam. Я благодарен вам за ваш быстрый ответ. Но, к сожалению, он также не удалял элемент массива с «типом»: «домашнее задание» и наименьшее значение в каждом _id., В каждом документе. –
@sapio_l Отображаются любые сообщения об ошибках? Пробовали ли вы распечатать объект 'lower_scores_docs', чтобы узнать, возвращается ли что-либо из агрегации? – chridam
Да, да. Цикл не работает, он ничего не печатает. @chridam –