Pymongo 聚合管道仅返回 100 个文档
Pymongo Aggregation Pipeline is returning only 100 Documents
我有一个简单的管道,运行 在 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}
,但对我没有帮助。
有人可以帮我检查一下吗?
谢谢
我不确定为什么“聚合”没有为我返回完整的结果集,所以我尝试了
这种使用“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..
我有一个简单的管道,运行 在 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}
,但对我没有帮助。
有人可以帮我检查一下吗?
谢谢
我不确定为什么“聚合”没有为我返回完整的结果集,所以我尝试了 这种使用“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..