Finde den ältesten / jüngsten Beitrag in der Mongodb-Sammlung

8

Ich habe eine mongodb Sammlung mit vielen Feldern. Ein Feld ist 'date_time', das in einem ISO-Datetime-Format steht, zB ISODate("2014-06-11T19:16:46Z") , und ein anderes Feld ist 'name'.

Wie oft finde ich den ältesten / jüngsten Beitrag in der Sammlung?

Beispiel: Wenn name Beiträge in der Sammlung 'data' vorhanden sind:

%Vor%

Mit dem Namen "John" wie finde ich den ältesten Beitrag in der Sammlung, d. h. den mit two ? Ähnlich für den jüngsten Beitrag.

    
user3799658 10.02.2015, 17:23
quelle

2 Antworten

13

Älteste:

%Vor%

Neueste:

%Vor%

Index auf { "name" : 1, "date_time" : 1 } , um die Abfragen effizient zu machen.

    
wdberkeley 10.02.2015, 18:46
quelle
2

Sie könnten es wie folgt aggregieren:

  • Erstellen Sie eine index in den Feldern name und date_time , so dass die $match und $sort stage-Operationen können es verwenden.

    db.t.ensureIndex({"name":1,"date_time":1})

  • $match alle Datensätze für die gewünschte name(s) .

  • $sort by date_time in aufsteigender Reihenfolge.
  • $group vom Feld name . Verwenden Sie den $ first -Operator, um den ersten zu erhalten Aufzeichnung der Gruppe, die auch die älteste sein wird. Verwenden Sie die $ last Operator, um den letzten Datensatz in der Gruppe zu erhalten, der auch der sein wird neueste.
  • Um den gesamten Datensatz zu erhalten, verwenden Sie $$ ROOT Systemvariable.

Code:

%Vor%

o / p:

%Vor%     
BatScream 10.02.2015 20:05
quelle