Comment interroger le pilote de Golang MongoDB?
J'essaie ceci:
db.Collection("products").Find(nil, bson.M{}, &options.FindOptions{Sort: "-price"})
Mais j'ai eu cette erreur:
impossible de transformer la chaîne de type en un document BSON: Writetring ne peut écrire que lors de la position positionnée sur un élément ou une valeur mais est positionnée sur une couche de toplevel
Je ne sais pas quoi passer pour trier la variable Becuase c'est une interface {}.
essayez le code ci-dessous
findOptions := options.Find()
// Sort by `price` field descending
findOptions.SetSort(bson.D{{"price", -1}})
db.Collection("products").Find(nil, bson.D{}, findOptions)
Quelques notes que j'ai rencontrées en essayant de résoudre un problème connexe:
Si vous essayez de trier par plusieurs champs, assurez-vous d'utiliser BSON.D plutôt que BSON.M, car BSON.M ne conserve pas la commande.
Si vous essayez de construire programmable plusieurs champs de tri, essayez
[.____] Ajout de BSON.E à un bson.d
Comme Dassum le faisait, passez bson.m {} pour un filtre vide comme recommandé par
[.____] la Documentation MONGO
Appliqué:
sort := bson.D{}
for _, example := examples {
sort = append(sort, bson.E{example, 1})
}
findOptions.SetSort(sort)
db.Collection("products").Find(nil, bson.D{}, findOptions)
Je ne pouvais pas passer bson.D
aux options (cela a causé une erreur). Mais ce code a fonctionné pour moi:
queryOptions := options.FindOneOptions{}
queryOptions.SetSort(bson.M{"priority": -1, "last_error_time": 1})
sResult := collection.FindOne(context.TODO(), queryFilter, &queryOptions)