我有这个代码到Golang的Mongo
cond := make([]bson.M, 0)
cond = append(condiciones, bson.M{"$match": bson.M{"userId": ID}})
cond = append(condiciones, bson.M{
"$lookup": bson.M{
"from": "invoices",
"localField": "userId",
"foreignField": "userId",
"as": "sales",
}})
cond = append(condiciones, bson.M{"$unwind": "$sales"})
cond = append(condiciones, bson.M{"$skip": skip})
cond = append(condiciones, bson.M{"$limit": 100})
cond = append(condiciones, bson.M{"$sort": bson.M{"dateInvoice": -1}})
cursor, err := collect.Aggregate(context.TODO(), cond)
我正在使用Golang和MongoDB
"go.mongodb.org/mongo-driver/bson"
这在联合,限制和跳过文档中都可以正常工作,但是$ sort不起作用。
我很绝望..请
我的代码有什么问题?
问候
最佳答案
您必须先将$sort
移到$skip
和$limit
操作之前,否则不能保证重复查询时文档以相同顺序列出(可以选择使用不同的分页参数),这可能会导致“随机”结果。最后的$sort
仅保证对受限的最多100个文档进行排序。
首先进行排序,以便您获得一致的行为(假设没有带有相同dateInvoice
时间戳的发票)。
关于mongodb - SORT在聚合功能中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61312342/