db.games.aggregate([
{ $unwind : "$rounds"},
{ $match: {
"rounds.round_values.gameStage": "River",
"rounds.round_values.decision": "BetPlus" }
},
{ $project: {"FinalFundsChange":1, "GameID":1}
}])
Полученный результат:Удаление дубликатов в MongoDB с совокупным запроса
{ "_id" : ObjectId("57cbce66e281af12e4d0731f"), "GameID" : "229327202", "FinalFundsChange" : 0.8199999999999998 }
{ "_id" : ObjectId("57cbe2fce281af0f34020901"), "FinalFundsChange" : -0.1599999999999997, "GameID" : "755030199" }
{ "_id" : ObjectId("57cbea3ae281af0f340209bc"), "FinalFundsChange" : 0.10000000000000009, "GameID" : "231534683" }
{ "_id" : ObjectId("57cbee43e281af0f34020a25"), "FinalFundsChange" : 1.7000000000000002, "GameID" : "509975754" }
{ "_id" : ObjectId("57cbee43e281af0f34020a25"), "FinalFundsChange" : 1.7000000000000002, "GameID" : "509975754" }
Как вы можете видеть, что последний элемент является дубликатом, то это потому, что разматывает создает два элемента его, что он должен. Как я могу (сохраняя агрегатную структуру запроса) сохранить первый элемент дубликата или сохранить только последний элемент дубликата?
Я видел, что способы сделать это, похоже, связаны либо с $ addToSet, либо с $ setUnion (любые детали, как это точно работает, также оцениваются), но я не понимаю, как я могу выбрать «подмножество» ', с помощью которого я хочу идентифицировать дубликаты (в моем случае это «GameID», другие значения могут быть разными) и как я могу выбрать, нужен ли мне первый или последний элемент.