Heim  >  Artikel  >  Backend-Entwicklung  >  Mongodb-Zeitreihe / Golang -

Mongodb-Zeitreihe / Golang -

王林
王林nach vorne
2024-02-11 10:18:171086Durchsuche

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]

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"`
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen