Maison > développement back-end > Golang > le corps du texte

Série chronologique Mongodb / Golang -

王林
Libérer: 2024-02-11 10:18:17
avant
1038 Les gens l'ont consulté

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]
Copier après la connexion

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"`
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!