Mongodb-Abfrage: Neuesten Datensatz mit Datum für jedes Element

Es gibt sechs Geräte in einer Sammlung, jedes hat viele Rekorde, einige sind Aufzeichnungen über die Termine und einige haben in der Woche oder/und Monat älter. Ich brauche eine Abfrage, die zurück neueste Letzte Datensatz jedes Gerät. Im Fall der .Aggregat() ich brauche das komplette "data" abgelegt.

Hier ist das Beispiel-json.

{
"date_time" : some-date
"device_id" : 27,
"gateway_id" : 1,
"data": [{"r" : 203,"v" : 3642},{"r" : 221,"v" : 3666}]
}
{
"date_time" : some-date
"device_id" : 28,
"gateway_id" : 1,
"data": [{"r" : 203,"v" : 3002},{"r" : 221,"v" : 3006}]
}
{
"date_time" : some-date
"device_id" : 29,
"gateway_id" : 1,
"data": [{"r" : 203,"v" : 3002}, {"r" : 221,"v" : 3006}]
}

Ich versucht, eine Menge Abfragen, aber kein Erfolg.

Bitte nicht die folgenden sind nicht für diesen Fall.

db.col.find({"device_id": {"$in": devices}, "date_time": { "$gte": last_date}}) .sort({$natural: -1})

db.col.find({"device_id": {"$in": devices}, "date_time": { "$gte": last_date}}) .sort({$natural: -1}).limit(1)

db.col.find({"device_id": {"$in": devices}}) .sort({"date_time": -1}).limit(1)

db.col.find({"device_id": {"$in": devices}}) .sort({"_id": -1}).limit(1)

Ich bin auf der Suche für die Abfrage liefert nur die aktuelle Platte von jedem Gerät in der Sammlung. Bitte beachten Sie, dass im Fall der .Aggregat() ich brauche das komplette "data" abgelegt.

  • versuchen Sie, mit Aggregat-Abfrage. es wird Ihnen dabei helfen, dasselbe Ergebnis, das Sie benötigt
InformationsquelleAutor Sajjad Ahmed | 2015-03-31
Schreibe einen Kommentar