Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在MongoDB聚合框架$sort上使用2个以上的字段吗?_Mongodb_Sorting_Aggregation Framework - Fatal编程技术网

我可以在MongoDB聚合框架$sort上使用2个以上的字段吗?

我可以在MongoDB聚合框架$sort上使用2个以上的字段吗?,mongodb,sorting,aggregation-framework,Mongodb,Sorting,Aggregation Framework,使用以下PyMongo查询。我使用了Mongo网络研讨会上的一些技巧,他们建议使用_id字段来存储时间戳,以提高性能和内存使用率 cursor = db.dados_meteo_reloaded.aggregate( [ { "$match": { "_id": { "$gte": "0001:20120901", "$lte": "0001:20140215" }, "TMP": { "$l

使用以下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}}
])
我得到的结果只按天排序。在管道的$sort步骤中,我仅使用

{"$sort":{"_id.year":1, "_id.month":1}
结果按年份和月份正确排序。在$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
}

排序没有限制

{$sort:{:,:…}

引用文档:

$sort
阶段具有以下原型形式:

{$sort:{:,:…}}

因此,舞台上可以使用的字段数量没有限制


但是,有一些内存:

$sort
阶段的RAM限制为100 MB。默认情况下,如果阶段超过此限制,$sort将产生错误。要允许处理大型数据集,请将选项设置为true,以启用
$sort
操作以写入临时文件

Pymongo
中,使用
allowDiskUse
选项的语法是:

collection.aggregate(
    [
        { '$sort': { <field1>: <sort order>, <field2>: <sort order> ... } }
    ],    
    allowDiskUse = True
)
collection.aggregate(
[
{'$sort':{:,:…}
],    
allowDiskUse=True
)

我找到了一个可能的解决方案。我已经测试过了。

没有,据我所知没有限制。你能给我们看一些示例文档吗,尤其是一小部分在管道中排序不正确的文档?@wdberkeley。好的,谢谢。
collection.aggregate(
    [
        { '$sort': { <field1>: <sort order>, <field2>: <sort order> ... } }
    ],    
    allowDiskUse = True
)