Heim > Backend-Entwicklung > Golang > Wie frage ich MongoDB-Datumsbereiche mit Go und Mgo ab?

Wie frage ich MongoDB-Datumsbereiche mit Go und Mgo ab?

DDD
Freigeben: 2024-11-08 14:06:02
Original
673 Leute haben es durchsucht

How to Query MongoDB Date Ranges Using Go and Mgo?

Abfragen von MongoDB-Datumsbereichen mit Go und Mgo

Bei der Arbeit mit MongoDB-Sammlungen, die Datumsangaben speichern, ist es wichtig zu verstehen, wie die darin enthaltenen Daten abgefragt werden angegebene Datumsbereiche. Dieser Artikel befasst sich mit einem Abfrageproblem, das bei der Verwendung von Golang und Mgo auftritt.

Die Beispiel-MongoDB-Sammlung mit dem Namen „my_sales“ enthält Dokumente mit Feldern wie „product_name“, „price“ und „sale_date“, dargestellt als ISODates. Das Ziel besteht darin, Verkaufsdatensätze abzurufen, die in einen bestimmten Datumsbereich fallen.

In der MongoDB-Shell sieht die Abfrage so aus:

db.my_sales.find({ sale_date: { $gt: ISODate("2014-11-04"), $lt: new ISODate("2014-11-05") });
Nach dem Login kopieren

Allerdings, wenn versucht wird, dieselbe Abfrage auszuführen In Golang mit dem Mgo-Treiber gibt der folgende Code keine Ergebnisse zurück:

var sales_his []Sale
err := c.Find(bson.M{"sale_date": bson.M{ "$gt": "ISODate("+date_from+")", "$lt": "ISODate("+date_to+")" }    }).All(&sales_his)
Nach dem Login kopieren

Das Problem liegt in der Art und Weise, wie Mgo mit BSON-Daten umgeht. Für Go-Strukturen sollte time.Time für Datumsfelder verwendet werden. Daher sollte die Sale-Struktur wie folgt definiert sein:

type Sale struct {
    ProductName string    `bson:"product_name"`
    Price       int       `bson:"price"`
    SaleDate    time.Time `bson:"sale_date"`
}
Nach dem Login kopieren

Mit dieser aktualisierten Struktur lautet die korrekte Abfrage in Golang:

fromDate := time.Date(2014, time.November, 4, 0, 0, 0, 0, time.UTC)
toDate := time.Date(2014, time.November, 5, 0, 0, 0, 0, time.UTC)

var sales_his []Sale
err = c.Find(
    bson.M{
        "sale_date": bson.M{
            "$gt": fromDate,
            "$lt": toDate,
        },
    }).All(&sales_his)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie frage ich MongoDB-Datumsbereiche mit Go und Mgo ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage