Maison >développement back-end >Golang >Erreur d'agrégation Golang Mongodb : l'objet de spécification d'étape de pipeline ne doit contenir qu'un seul champ
Je souhaite que le décompte soit regroupé par nom au cours du mois dernier. Lorsque j'essaie d'exécuter la requête suivante dans le client Golang Mongo. J'obtiens l'erreur :
error:
L'objet de spécification de l'étape du pipeline ne doit contenir qu'un seul champ.
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})
Je ne sais pas quoi faire ?
J'ai pu obtenir les résultats que je souhaitais en effectuant les ajustements suivants :
$createTime
更改为 createTime
,我假设您的字段名称不以 $
Débutbson.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) }
Quelques conseils pour déboguer ce genre de problème :
err
variablesuri := 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) }
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!