如何使用golangmongodb驱动程序查询查找?
我试试这个:
db.Collection("products").Find(nil, bson.M{}, &options.FindOptions{Sort: "-price"})
但是我得到了这个错误:
无法将类型字符串转换为 BSON 文档:WriteString 只能在定位在元素或值上时写入,但位于顶层
我不知道该传递给排序变量的内容,因为它是一个接口{}。
尝试以下代码
findOptions := options.Find()
// Sort by `price` field descending
findOptions.SetSort(bson.D{{"price", -1}})
db.Collection("products").Find(nil, bson.D{}, findOptions)
我无法将bson.D
传递给选项(它导致了错误(。 但是这段代码对我有用:
queryOptions := options.FindOneOptions{}
queryOptions.SetSort(bson.D{{"priority", -1}, {"last_error_time", 1}})
sResult := collection.FindOne(context.TODO(), queryFilter, &queryOptions)
我在尝试解决相关问题时遇到的一些注意事项:
-
如果尝试按多个字段排序,请确保使用 bson。D 宁愿 比布森。M因为bson。M 不维护秩序。
-
如果尝试以编程方式构建多个排序字段,请尝试
appending bson。E 到 bson。D -
正如达苏姆所做的那样,通过bson。M{} 表示空过滤器,推荐者为
mongo 文档
应用的:
sort := bson.D{}
for _, example := examples {
sort = append(sort, bson.E{example, 1})
}
findOptions.SetSort(sort)
db.Collection("products").Find(nil, bson.D{}, findOptions)
需要注意的另一点是,确保字段名称的映射正确。就我而言,我试图对字段进行排序createdAt
但在意识到我的mongodb字段被映射为createdat
之后。
queryOptions.SetSort(bson.D{{"createdat", -1}