Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Siri masa Mongodb / Golang -

Siri masa Mongodb / Golang -

王林
王林ke hadapan
2024-02-11 10:18:171086semak imbas

Mongodb 时间序列 / Golang -

PHP editor Zimo membawakan anda pengenalan kepada "Siri Masa Mongodb / Golang -". Mongodb ialah pangkalan data bukan perhubungan, manakala Golang ialah bahasa pengaturcaraan yang cekap. Dari segi pemprosesan data siri masa, gabungan Mongodb dan Golang boleh memberikan fungsi dan prestasi yang berkuasa. Artikel ini akan memperkenalkan secara terperinci cara menggunakan Mongodb dan Golang untuk memproses data siri masa, termasuk penyimpanan data, pertanyaan dan analisis. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini akan membantu anda lebih memahami dan menggunakan kelebihan dan teknik Mongodb dan Golang dalam pemprosesan data siri masa.

Kandungan soalan

Saya mempunyai contoh kod go berikut yang memasukkan data daripada permintaan rehat (gin) ke dalam mongodb tetapi ia gagal:

['timestamp' must be present and contain a valid bson utc datetime value]

Kod:

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

Apa salah saya? Saya rasa mongodb melakukan keseluruhan proses menukar jenis time.time kepada jenis yang dicari oleh mongodb. time.time 类型转换为 mongodb 查找的类型的整个过程。

解决方法

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

Penyelesaian

Collection.InsertOne(),要么使用 Collection.InsertMany()Anda menghubungi Collection.InsertOne() , boleh digunakan untuk memasukkan satu dokumen. Walau bagaimanapun, devicesReadings ialah sebahagian daripada berbilang dokumen.

Jadi anda sama ada perlu mengulangi semua dokumen dan menyerahkannya secara individu kepada 🎜🎜, menggunakan sekeping berbilang dokumen untuk dimasukkan. 🎜

Atas ialah kandungan terperinci Siri masa Mongodb / Golang -. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam