Golang MongoDB驱动程序排序

时间:2019-10-03 16:19:17

标签: mongodb go

如何使用golang mongodb驱动程序查询查找?

我尝试这个:

db.Collection("products").Find(nil, bson.M{}, &options.FindOptions{Sort: "-price"})

但是我得到了这个错误:

  

无法将类型字符串转换为BSON文档:WriteString只能在位于Element或Value上但位于TopLevel上时写入

我不知道要传递给Sort变量什么,因为它是一个接口{}。

3 个答案:

答案 0 :(得分:0)

尝试以下代码

findOptions := options.Find()
// Sort by `price` field descending
findOptions.SetSort(bson.D{{"price", -1}})


db.Collection("products").Find(nil, bson.D{}, findOptions)

答案 1 :(得分:0)

我无法将‍ cmd = "SELECT id, data->"$.val" FROM TestTable;" mysql_cur.execute(cmd) res = mysql_cur.fetchall() mysql_cur.close() # res has id and val. id is of type int, val is of type string for float value and type bool for boolean value 传递给选项(这导致错误)。 但是这段代码对我有用:

bson.D

答案 2 :(得分:0)

我在尝试解决相关问题时遇到了一些注意事项:

  • 如果尝试按多个字段排序,请确保使用bson.D而不是 比bson.M好,因为bson.M不保留顺序。

  • 如果尝试以编程方式构建多个排序字段,请尝试
    将bson.E附加到bson.D

  • 就像dassum一样,按照
    的建议,将bson.M {}传递给空过滤器 mongo documentation

已应用:

function myFunction() {
  var file = DriveApp.getFilesByName('Dummy.docx');
  if (!file.hasNext()) return;
  var document = Drive.Files.copy({}, file.next().getId(), {convert: true});
  var doc = DocumentApp.openById(document.id);
}