Mongodb-Zeitreihe / Golang -

王林
Freigeben: 2024-02-11 10:18:17
nach vorne
1037 Leute haben es durchsucht

Mongodb 时间序列 / Golang -

PHP-Editor Zimo bringt Ihnen eine Einführung in „Mongodb Time Series / Golang –“. Mongodb ist eine nicht relationale Datenbank, während Golang eine effiziente Programmiersprache ist. Im Hinblick auf die Verarbeitung von Zeitreihendaten kann die Kombination von Mongodb und Golang leistungsstarke Funktionalität und Leistung bieten. In diesem Artikel wird detailliert beschrieben, wie Sie mit Mongodb und Golang Zeitreihendaten verarbeiten, einschließlich Datenspeicherung, Abfrage und Analyse. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, hilft Ihnen dieser Artikel dabei, die Vorteile und Techniken von Mongodb und Golang bei der Verarbeitung von Zeitreihendaten besser zu verstehen und anzuwenden.

Frageninhalt

Ich habe den folgenden Beispiel-Go-Code, der Daten aus einer Restanforderung (Gin) in Mongodb einfügt, aber es schlägt fehl:

['timestamp' must be present and contain a valid bson utc datetime value]
Nach dem Login kopieren

Code:

func CreateDevicesReadings(c *gin.Context) {

var devicesReadings DevicesReadings
c.BindJSON(&devicesReadings)

// Connect to MongoDB
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
    c.JSON(500, gin.H{
        "message": "Internal Server Error. Could not connect to the database.",

    })
    log.Default().Println(err)
}

collection := client.Database("florly").Collection("devicesReadings")
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)


// Set timestamp to the current time at the moment of the request
for i := 0; i < len(devicesReadings.DevicesReadings); i++ {
    devicesReadings.DevicesReadings[i].Timestamp = time.Now().UTC()
} 
_, err = collection.InsertOne(ctx, devicesReadings)
if err != nil {
    c.JSON(500, gin.H{
        "message": "Internal Server Error. Could not insert the data into the database.",
    })
    log.Default().Println(err)
} else {
    log.Default().Println("Data inserted successfully.")
}

client.Disconnect(context.Background())
}

type DeviceReadings struct {
    ID      primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
    Alias          string `json:"alias" bson:"alias"`
    Timestamp   time.Time `json:"timestamp,omitempty" bson:"timestamp"`
    SystemReadings SystemReadings `json:"systemReadings" bson:"systemReadings"`
    SensorReadings SensorReadings `json:"sensorsReadings" bson:"sensorsReadings"`
}
Nach dem Login kopieren

Was habe ich falsch gemacht? Ich denke, dass Mongodb den gesamten Prozess der Konvertierung des Typs time.time in den Typ übernimmt, nach dem Mongodb sucht. time.time 类型转换为 mongodb 查找的类型的整个过程。

解决方法

您调用 Collection.InsertOne(),可用于插入单个文档。然而,devicesReadings

Lösung

Collection.InsertOne(),要么使用 Collection.InsertMany()Sie rufen Collection.InsertOne() auf, kann zum Einfügen eines einzelnen Dokuments verwendet werden. devicesReadings ist jedoch Teil mehrerer Dokumente.

Sie müssen also entweder alle Dokumente durchlaufen und sie einzeln an 🎜🎜 übergeben, wobei Sie zum Einfügen ein Segment mehrerer Dokumente verwenden. 🎜

Das obige ist der detaillierte Inhalt vonMongodb-Zeitreihe / Golang -. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!