Ich habe eine Sammlung, wo es einige doppelte Dokumente gibt. Im Beispiel:Duplikate zusammenführen und die ältesten entfernen
Erstes Dokument:
{
"_id" : ObjectId("56f3d7cc1de31cb20c08ae6b"),
"AddedDate" : ISODate("2016-05-01T00:00:00.000Z"),
"Place": "THISPLACE",
"PresentInDB" : [
{
"InDB" : ISODate("2016-05-01T00:00:00.000Z")
}
],
"Checked" : [],
"Link": "http://www.mylink.com/first/84358"
}
Zweites Dokument:
{
"_id" : ObjectId("577740526c1e542904725238"),
"AddedDate" : ISODate("2016-05-02T00:00:00.000Z"),
"Place": "THISPLACE",
"PresentInDB" : [
{
"InDB" : ISODate("2016-05-02T00:00:00.000Z")
},
{
"InDB" : ISODate("2016-05-03T00:00:00.000Z")
}
],
"Checked" : [
{
"Done" : ISODate("2016-05-02T00:00:00.000Z")
},
],
"Link": "http://www.mylink.com/second/84358"
}
Link
Feld enthält gleiche sequense von Zahlen in beiden Dokumenten 84358
.
So würde Ich mag diese Schritte erreichen:
- Schleife über jedes Dokument in der Sammlung.
- die Zahlenfolge in jedem Dokument im
Link
Feld (d.h.84358
oben) passen, und wenn es mehrere Dokumente in Sammlung, die diese Sequenz in demLink
Bereich hat. Und auch wennPlace
Feld Spiel in beiden Dokumenten: - Merge
PresentInDB
undChecked
Felder -> fusioniertPresentInDB
undChecked
Felder durch Hinzufügen von Array-Werten aus dem neuesten Dokument (nach Datum inAddedDate
Feld) mit dem ältesten Dokument. - Entfernen Sie das neueste Dokument.
Wie könnte ich eine solche Abfrage erreichen?
Großartig, vielen Dank! – user1665355