Ich bin neu zu Mongo, so dass ich nicht viel weiß und ich kann nicht einfach doppelte Zeilen aufgrund einiger Abhängigkeiten entfernen.Mongo Distinct Abfrage mit voller Zeile Objekt
Ich habe folgende Daten in Mongo gespeichert
{'id': 1, 'key': 'qscderftgbvqscderftgbvqscderftgbvqscderftgbvqscderftgbv', 'name': 'some name', 'country': 'US'},
{'id': 2, 'key': 'qscderftgbvqscderftgbvqscderftgbvqscderftgbvqscderftgbv', 'name': 'some name', 'country': 'US'},
{'id': 3, 'key': 'pehnvosjijipehnvosjijipehnvosjijipehnvosjijipehnvosjiji', 'name': 'some name', 'country': 'IN'},
{'id': 4, 'key': 'pfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnew', 'name': 'some name', 'country': 'IN'},
{'id': 5, 'key': 'pfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnew', 'name': 'some name', 'country': 'IN'}
Sie so lange einige Zeilen sind doppelt mit unterschiedlicher ID sehen können, wie sie dieses Problem zu lösen, nehmen vom Eingang ich es auf Ausgang angehen muß.
muss ich die Daten auf folgende Weise:
{'id': 1, 'key': 'qscderftgbvqscderftgbvqscderftgbvqscderftgbvqscderftgbv', 'name': 'some name', 'country': 'US'},
{'id': 3, 'key': 'pehnvosjijipehnvosjijipehnvosjijipehnvosjijipehnvosjiji', 'name': 'some name', 'country': 'IN'},
{'id': 4, 'key': 'pfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnew', 'name': 'some name', 'country': 'IN'}
Meine Anfrage
keys = db.collection.distinct('key', {})
all_data = db.collection.find({'key': {$in: keys}})
Wie Sie sehen, es dauert zwei Abfragen für eine gleiche Ergebnismenge kombinieren Sie es zu einem als Datenbank ist sehr groß
Ich könnte auch eine unique key
auf der key
erstellen, aber der Wert ist so lang (152 Zeichen), dass es mir nicht helfen wird.
Oder wird es ??
Mögliches Duplikat [Duplikate entfernen von MongoDB] (http://stackoverflow.com/questions/ 31557053/remove-duplicates-from-mongodb) –
Vielleicht nicht "genau" im "removal" Teil, aber sicherlich im identification Teil. Im Grunde müssen Sie in den allgemeinen Feldern "$ group" eingeben und dann alle anderen Hilfsfelder mit "$ first" zurückgeben –