bson.M 数组的顺序是否在mongodb go 驱动程序中维护?

Is order of array of bson.M maintained in mongodb go driver?

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

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

确定匹配总是排在第一位再排序吗?我应该切换到 mongo.Pipeline ([]bson.D) 而不是 100% 维护订单吗?谢谢

[]bson.M是一个切片,切片确实保持顺序。 $match 总是第一个,$sort 第二个。

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

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

当单个文档中的顺序很重要时,您必须使用 bson.D,例如按多个字段排序时。有关详细信息,请参阅