MongoDB:如何使用行号进行分组、排序,然后选择一定范围的行号?

MongoDB:如何使用行号进行分组、排序,然后选择一定范围的行号?,mongodb,sorting,aggregation-framework,grouping,partitioning,Mongodb,Sorting,Aggregation Framework,Grouping,Partitioning,我想将运行Python的客户端PC的工作负载推送到MongoDB服务器上,而不是推送到服务器上。目前,我已经将Mongo中的数据提取为CSV文件,然后通过Python计算并执行逻辑 CSV文件是一个巨大的25-30GB文件,需要对其进行分区和排序,然后从每个分区中选择一些行。下面是执行该任务的Python代码 df['RN'] = df.sort_values(['timestamp'], ascending=[True]) \ .groupby(['A','B','C

我想将运行Python的客户端PC的工作负载推送到MongoDB服务器上,而不是推送到服务器上。目前,我已经将Mongo中的数据提取为CSV文件,然后通过Python计算并执行逻辑

CSV文件是一个巨大的25-30GB文件,需要对其进行分区和排序,然后从每个分区中选择一些行。下面是执行该任务的Python代码

df['RN'] = df.sort_values(['timestamp'], ascending=[True]) \
             .groupby(['A','B','C','D','E','F','G']) \
             .cumcount() + 1
          
df2=df.loc[(df['RN'] >= 30) & (df['RN'] <= 180)]

问题是 0我应该这样做吗

  • 如果我应该,我如何在每个“id”中选择“id”和100-200“详细信息”范围内的详细信息

  • 如果我能像上面那样选择,问题结果将是{u id,100 of details}, 我如何将它分解为100个{u id:details}

  • 多谢各位

    db.collection.aggregate(
        [
            { "$limit": 200000 },
            {
                "$group":
                    {
                        "_id":
                            {
                                "TID": "$TID",
                                "Opt": "$Opt",
                                "DSN1": "$DSN1",
                                "DSN2": "$DSN2",
                                "Column": "$Column",
                                "Row": "$Row",
                                "CSN": { "$substr": ["$CSN", 2, -6] }
                            },
                        "details": {
                            "$push":
                                {
                                    "A": "$A",
                                    "B": "$B",
                                    "C": "$C",
                                    "D": "$D",
                                    "timestamp": "$timestamp"
                                }
                        }
                    }
            }
        ],
        {
            allowDiskUse: true
        }
    );