mongodb - SORT在聚合功能中不起作用

标签 mongodb go aggregation mongo-go

我有这个代码到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/

相关文章:

javascript - 无法使用 .update() 更新 Mongoose 属性

python - 计算聚合中最大值的出现次数

windows - TerminateProcess() 返回 EINVAL

go - 在go中的给定范围内生成随机的128位十进制

python - Pandas :计算两列的不同组合并添加到同一数据框

mysql - sphinx索引与mysql索引的主要区别是什么,它们允许更快的搜索和聚合

node.js - 在nodejs mongodb中通过id查找文档

node.js - 未找到匹配项的 Mongoose 查询返回什么?

mongodb - 无法使用mongo 3.0.2在2.4.4上执行grails run-app

javascript - 如何在 Google map 服务的 Go 客户端中使用方向响应?