【问题标题】:Pymongo Aggregation Pipeline is returning only 100 DocumentsPymongo 聚合管道仅返回 100 个文档
【发布时间】:2021-06-01 12:51:56
【问题描述】:

我有一个简单的管道并且在 MongoDB Compass 中运行良好,但是当我尝试使用 Pymongo 执行相同的管道时,我得到的文档数量较少。当我检查结果光标只有或限制 100 个文档时,但在 Compass 中我看到返回更多数据。我正在使用以下连接,但不确定我缺少什么。

预期的文档少于 200 个文档。

Python version: 3.7
Pymongo version: pymongo==3.11.3


db.collections.aggregate([
    {
        '$match': {
            'subject': {
                '$in': [
                    '1','2','3'
                ]
            }
        }
    }, {
        '$lookup': {
            'from': 'schools', 
            'localField': 'locId', 
            'foreignField': 'locId', 
            'as': 'schools'
        }
    }, {
        '$unwind': {
            'path': '$schools', 
            'preserveNullAndEmptyArrays': True
        }
    }, {
        '$unwind': {
            'path': '$schools.schools', 
            'preserveNullAndEmptyArrays': False
        }
    }, {
        '$match': {
            'schools.appointmentDate': {
                '$gte': datetime(2021, 3, 15, 0, 0, 0, tzinfo=timezone.utc), 
                '$lt': datetime(2021, 3, 16, 0, 0, 0, tzinfo=timezone.utc)
            }, 
            'schools.schools.appointmentStatus': {
                '$in': [
                    'Scheduled'
                ]
            }
        }
    }, {
        '$group': {
            '_id': '$subject', 
            'totalAppointments': {
                '$sum': 1
            }
        }
    }
])

我也在 mongo 查询中使用了{"$limit" : 10000},但对我没有帮助。

有人可以帮我检查一下吗?

谢谢

【问题讨论】:

  • 将您的代码减少到仅需要的部分。删除 str(document),允许使用磁盘,指定一个简单的管道等。

标签: python-3.x mongodb pymongo-3.x


【解决方案1】:

我不确定为什么“聚合”没有为我返回完整的结果集,所以我尝试了 这种使用“aggregate_raw_batches”的替代方法并解决了我的问题。

import bson
cursor = db.test.aggregate_raw_batches(pipeline) 
for batch in cursor:
    for i in bson.decode_all(batch):
         #do with documents.. 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2017-10-27
    • 1970-01-01
    • 2023-02-10
    • 2021-12-06
    • 2014-01-29
    • 2019-06-26
    相关资源
    最近更新 更多