gpt4 book ai didi

mongodb - 在mongodb中查找具有最大值的不同文档

转载 作者:可可西里 更新时间:2023-11-01 09:20:27 26 4
gpt4 key购买 nike

我在 MongoDB 中有数千个文档,其中一些示例如下:

{"title":"Foo", "hash": "1234567890abcedf", "num_sold": 49, 
"created": "2013-03-09 00:00:00"}

{"title":"Bar", "hash": "1234567890abcedf", "num_sold": 55,
"created": "2013-03-11 00:00:00"}

{"title":"Baz", "hash": "1234567890abcedf", "num_sold": 55,
"created": "2013-03-10 00:00:00"}

{"title":"Spam", "hash": "abcedef1234567890", "num_sold": 20,
"created": "2013-03-11 00:00:00"}

{"title":"Eggs", "hash": "abc1234567890def", "num_sold": 20,
"created": "2013-03-11 00:00:00"}

是否可以选择所有具有不同 hash 的文档,最大 num_sold 并且如果有多个文档具有相同的 num_sold,从 created 字段中选择最新的文档。

我使用 PyMongo 作为客户端。

最佳答案

我不是 Python 专家,所以我将用 JavaScript 编写。您可以使用 $sort$group$first 运算符通过聚合框架执行此操作:

db.col.aggregate([
{$sort: {created:-1}},
{$group: {_id: '$hash', num_sold: {$first: '$num_sold'}, _id_seen: {$first: '$_id'}}}
])

基本上我所做的是按创建日期 DESC 对传入的文档进行排序,然后我对散列进行分组,连接两个重复的散列,然后我得到排序组的第一个结果,这应该是最新的文档。

引用资料:

关于mongodb - 在mongodb中查找具有最大值的不同文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15334408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com