我正在使用Mongodb go驱动程序,仍然在想如何聚合。
我的问题是,是否使用[] bson.M作为管道,如以下代码所示:
collection.Aggregate(
ctx,
[]bson.M{
bson.M{
"$match": filter,
},
bson.M{
"$sort": sort,
},
},
)
可以确定匹配始终是排序之前的第一吗?我应该改用mongo.Pipeline([] bson.D)来保持100%的订单吗?谢谢 最佳答案
[]bson.M
是一个 slice ,并且 slice 确实保持顺序。 $match
将始终放在第一位,$sort
作为第二位。bson.M
是一个映射,因此,如果其中包含多个元素(键-值对),则不会保持其内部顺序。
您可以使用对您来说更方便的任何一种([]bson.M
或[]bson.D
或mongo.Pipeline
)。
当订单在单个文档中很重要时,您必须使用bson.D
,例如在按多个字段排序时。有关详细信息,请参见bson.D vs bson.M for find queries。
关于mongodb - mongodb go driver中维护了bson.M数组的顺序吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/66272948/