Hug*_*ugo 3 sorting mongodb aggregation-framework
使用以下PyMongo查询.我使用了Mongo网络研讨会的一些提示,他们建议使用_id字段来存储时间戳,以提高性能和内存使用率.
cursor = db.dados_meteo_reloaded.aggregate( [
{
"$match": {
"_id": {
"$gte": "0001:20120901",
"$lte": "0001:20140215"
},
"TMP": {
"$lt": 7.2
}
}
},
{
"$project": {
"year": {
"$substr": [
"$_id",
5,
4
]
},
"month": {
"$substr": [
"$_id",
9,
2
]
},
"day": {
"$substr": [
"$_id",
11,
2
]
}
}
},
{
"$group": {
"_id": {"year":"$year","month":"$month","day":"$day"},
"frio": {
"$sum": 0.25
}
}
},
{"$sort":{"_id.year":1, "_id.month":1, "_id.day":1}}
])
Run Code Online (Sandbox Code Playgroud)
我得到的结果只按天排序.在管道的$ sort步骤中,我只使用
{"$sort":{"_id.year":1, "_id.month":1}
Run Code Online (Sandbox Code Playgroud)
结果按年份和月份正确排序.$ sort步骤可以使用多少字段?
这是一些示例文档
{
"_id" : "0001:20121201000000",
"RNF" : 0,
"WET" : 8,
"HMD" : 100,
"TMP" : 4.4
},
{
"_id" : "0001:20121201001500",
"RNF" : 0,
"WET" : 7.9,
"HMD" : 100,
"TMP" : 4.2
}
Run Code Online (Sandbox Code Playgroud)
引用文档:
该
$sort阶段具有以下原型形式:
{ $sort: { <field1>: <sort order>, <field2>: <sort order> ... } }
因此,$sort舞台上可以使用的字段数量没有限制.
但是有内存限制 :
该
$sort阶段的RAM限制为100兆字节.默认情况下,如果阶段超出此限制,$ sort将产生错误.要允许处理大型数据集,请将该allowDiskUse选项设置为true以使$sort操作能够写入临时文件.
在Pymongo使用语法allowDiskUse选项是:
collection.aggregate(
[
{ '$sort': { <field1>: <sort order>, <field2>: <sort order> ... } }
],
allowDiskUse = True
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
737 次 |
| 最近记录: |