我在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"}
Run Code Online (Sandbox Code Playgroud)
是否可以选择hash具有最大值的不同文档,num_sold如果有多个文档具有相同num_sold的文档,请从该created字段中选择最新文档.
我使用PyMongo作为客户端.
我不是Python专家所以我会用JavaScript编写.您可以使用与聚合框架做到这一点$sort,$group并$firstopreators:
db.col.aggregate([
{$sort: {created:-1}},
{$group: {_id: '$hash', num_sold: {$first: '$num_sold'}, _id_seen: {$first: '$_id'}}}
])
Run Code Online (Sandbox Code Playgroud)
基本上我所做的是按创建的日期DESC对传入的文档进行排序,然后我对哈希进行分组,连接两个重复的哈希值,然后我得到排序组的第一个结果,它应该是最新的文档.
参考文献:
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |