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:
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.
Älteste:
%Vor%Neueste:
%Vor% Index auf { "name" : 1, "date_time" : 1 }
, um die Abfragen effizient zu machen.
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. Code:
%Vor%o / p:
%Vor%Tags und Links datetime mongodb aggregation-framework datetime-format