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.D
或 mongo.Pipeline
)。
当单个文档中的顺序很重要时,您必须使用 bson.D
,例如按多个字段排序时。有关详细信息,请参阅 。
我正在使用 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.D
或 mongo.Pipeline
)。
当单个文档中的顺序很重要时,您必须使用 bson.D
,例如按多个字段排序时。有关详细信息,请参阅