【问题标题】:Is order of array of bson.M maintained in mongodb go driver?bson.M 数组的顺序是否在 mongodb go 驱动程序中维护?
【发布时间】:2021-02-19 06:50:33
【问题描述】:

我正在使用 Mongodb go 驱动程序,但仍在研究如何聚合。 我的问题是,如果我使用 []bson.M 作为管道,如下面的代码所示:

    collection.Aggregate(
    ctx,
    []bson.M{
        bson.M{
            "$match": filter,
        },
        bson.M{
            "$sort": sort,
        },
    },
)

是否确定匹配总是在排序之前?我应该切换到 mongo.Pipeline ([]bson.D) 来 100% 维护订单吗?谢谢

【问题讨论】:

    标签: mongodb go bson mongo-go


    【解决方案1】:

    []bson.M 是一个切片,切片确实保持顺序。 $match 将始终排在第一位,$sort 排在第二位。

    bson.M 是一个映射,因此如果其中有多个元素(键值对),则不会维护其中的顺序。

    您可以使用更方便的方式([]bson.M[]bson.Dmongo.Pipeline)。

    当单个文档中的顺序很重要时,您必须使用bson.D,例如按多个字段排序时。详情请见bson.D vs bson.M for find queries

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 2014-03-03
      • 1970-01-01
      • 2011-09-18
      • 2022-12-03
      • 1970-01-01
      • 2017-06-10
      • 2016-03-13
      • 1970-01-01
      相关资源
      最近更新 更多