Maison  >  Article  >  développement back-end  >  Série chronologique Mongodb / Golang -

Série chronologique Mongodb / Golang -

王林
王林avant
2024-02-11 10:18:171073parcourir

Mongodb 时间序列 / Golang -

L'éditeur PHP Zimo vous propose une introduction à "Mongodb Time Series / Golang -". Mongodb est une base de données non relationnelle, tandis que Golang est un langage de programmation efficace. En termes de traitement de données de séries chronologiques, la combinaison de Mongodb et Golang peut fournir des fonctionnalités et des performances puissantes. Cet article présentera en détail comment utiliser Mongodb et Golang pour traiter les données de séries chronologiques, y compris le stockage, les requêtes et l'analyse des données. Que vous soyez débutant ou développeur expérimenté, cet article vous aidera à mieux comprendre et appliquer les avantages et les techniques de Mongodb et Golang dans le traitement des données de séries chronologiques.

Contenu de la question

J'ai l'exemple de code go suivant qui insère les données d'une requête de repos (gin) dans mongodb mais il échoue :

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

Qu'est-ce que j'ai fait de mal ? Je pense que mongodb effectue tout le processus de conversion du type time.time en type recherché par mongodb. time.time 类型转换为 mongodb 查找的类型的整个过程。

解决方法

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

Solution

Collection.InsertOne(),要么使用 Collection.InsertMany()Vous appelez Collection.InsertOne() , peut être utilisé pour insérer un seul document. Cependant, devicesReadings fait partie de plusieurs documents.

Vous devez donc soit parcourir tous les documents et les transmettre individuellement à 🎜🎜, en utilisant une tranche de plusieurs documents à insérer. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer