Rumah > pembangunan bahagian belakang > Golang > Ralat pengagregatan Golang mongodb: objek spesifikasi peringkat saluran paip mesti mengandungi hanya satu medan

Ralat pengagregatan Golang mongodb: objek spesifikasi peringkat saluran paip mesti mengandungi hanya satu medan

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-02 14:13:21
ke hadapan
1030 orang telah melayarinya

Golang mongodb 聚合错误:管道阶段规范对象必须仅包含一个字段

Kandungan soalan

Saya ingin mendapatkan kiraan dikumpulkan mengikut nama dalam tempoh sebulan yang lalu. Apabila saya cuba menjalankan pertanyaan berikut dalam klien golang mongo. Saya mendapat ralat:

error: Objek spesifikasi peringkat saluran paip mesti mengandungi hanya satu medan.

cond := &bson.D{
        bson.E{Key: "$createTime", Value: bson.E{Key: "$gte", Value: time.Now().AddDate(0, -1, 0)}},
    }
    match := bson.D{{Key: "$match", Value: cond}}
    group := bson.D{{Key: "$group", Value: bson.D{
        {Key: "_id", Value: "$name"},
        {Key: "count", Value: bson.D{{Key: "$sum", Value: 1}}},
    }}}
    cursor, err := col.Aggregate(ctx, mongo.Pipeline{match, group})
Salin selepas log masuk

Saya tak tahu nak buat apa?


Jawapan betul


Saya dapat hasil yang saya inginkan dengan membuat pelarasan berikut:

  • $createTime 更改为 createTime,我假设您的字段名称不以 $ Permulaan
  • bson.E{Key: "$gte", Value: time.Now().AddDate(0, -1, 0)} 更改为 bson.D{{Key: "$gte", Value: time .Now().AddDate(0, -1, 0)}}
cond := &bson.D{
    bson.E{Key: "createTime", Value: bson.D{{Key: "$gte", Value: time.Now().AddDate(0, -1, 0)}}},
}
match := bson.D{{Key: "$match", Value: cond}}
group := bson.D{{Key: "$group", Value: bson.D{
    {Key: "_id", Value: "$name"},
    {Key: "count", Value: bson.D{{Key: "$sum", Value: 1}}},
}}}
cursor, err := col.Aggregate(context.TODO(), mongo.Pipeline{match, group})

if err != nil {
    log.Println("Error: ", err)
}
Salin selepas log masuk

Beberapa petua untuk menyahpepijat masalah seperti ini:

  • Sentiasa semak mesej ralat yang dikembalikan dalam err pembolehubah
  • Anda boleh mendayakan pengelogan arahan pangkalan data mentah melalui:
uri := options.Client().ApplyURI(appSettings.MongoDbUri)

if appSettings.LogDatabaseCommands {
    cmdMonitor := &event.CommandMonitor{
        Started: func(_ context.Context, evt *event.CommandStartedEvent) {
            log.Print(evt.Command)
        },
    }
    uri.SetMonitor(cmdMonitor)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Ralat pengagregatan Golang mongodb: objek spesifikasi peringkat saluran paip mesti mengandungi hanya satu medan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan