Структура моей базы данных примерно такая.MongoDB создает дубликаты в .aggregate()
{
_id : ObjectId(...),
no : 2,
dates : [
{ year : 2016, month : 3, grade : {} },
{ year : 2016, month : 2, grade : {} },
{ year : 2016, month : 1, grade : {} },
]
},
{
_id : ObjectId(...),
no : 1,
dates : [
{ year : 2016, month : 3, grade : {} },
{ year : 2016, month : 2, grade : {} },
{ year : 2016, month : 1, grade : {} },
]
}
Теперь необходимо найти груз и отсортировать его по годам, а затем по месяцам. У меня есть следующий код:
db.something.aggregate([
{ '$match' : { 'no' : 2 }},
{ '$unwind' : '$dates'},
{ '$sort' : {
'dates.year' : 1,
'dates.month' : 1
}},
{ '$group' : {
'_id' : '$no',
'dates' : { '$push' : '$dates' }
}}
]).pretty();
Я думаю, что я подхожу к нему правильно, но он как-то генерирует дубликаты. Что-то вроде этого:
{
_id : ObjectId(...),
no : 2,
dates : [
{ year : 2016, month : 1, grade : {} },
{ year : 2016, month : 1, grade : {} },
{ year : 2016, month : 2, grade : {} },
{ year : 2016, month : 2, grade : {} },
{ year : 2016, month : 3, grade : {} },
{ year : 2016, month : 3, grade : {} },
]
}
Если удалить $sort
и $group
результат не содержит дубликатов. Я уверен, что вставил все правильно, и у меня нет дубликатов или вообще ничего в моей базе данных. Как вы думаете, что с этим не так? Я совершенно пуст относительно того, как я должен действовать.
Большое спасибо!
[EDIT]
Хорошо, я просто переустановил MongoDB, и это просто волшебно работает. Я все еще не знаю, что произошло.