Rumah >pembangunan bahagian belakang >Golang >Ralat pengagregatan Golang mongodb: objek spesifikasi peringkat saluran paip mesti mengandungi hanya satu medan
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})
Saya tak tahu nak buat apa?
Saya dapat hasil yang saya inginkan dengan membuat pelarasan berikut:
$createTime
更改为 createTime
,我假设您的字段名称不以 $
Permulaanbson.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) }
Beberapa petua untuk menyahpepijat masalah seperti ini:
err
pembolehubahuri := 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) }
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!