为了账号安全,请及时绑定邮箱和手机立即绑定

SORT 在聚合函数中不起作用

SORT 在聚合函数中不起作用

Go
叮当猫咪 2022-06-01 10:36:31
我有这个代码到 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 不起作用.. 我有发票但没有按“dateInvoice”排序我很绝望..拜托我的代码有什么问题?
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

我有一个解决方案。

反而

cond = append(condiciones, bson.M{"$sort": bson.M{"dateInvoice": -1}})

有必要写

cond = append(condiciones, bson.M{"$sort": bson.M{"sales.dateInvoice": -1}})

因为$sort,尝试在初始集合'users'中找到'dateInvoice',并且dateInvoice字段在sales集合中。


查看完整回答
反对 回复 2022-06-01
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您必须在and操作$sort之前移动,否则无法保证在重复查询时文档以相同的顺序列出(可选地使用不同的分页参数),这可能会导致“随机”结果。最后只保证对限制的最多 100 个文档进行排序。$skip$limit$sort

首先排序,因此您可以获得一致的行为(假设没有具有相同dateInvoice时间戳的发票)。


查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信