You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure MongoDB中$in查询异常:仅返回101条而非140条数据

解决Azure MongoDB查询仅返回101条数据的问题

嗨,我碰到过好几个用户遇到类似的状况——你这情况几乎可以肯定是Azure Cosmos DB for MongoDB API的默认分页限制在作祟,本地MongoDB没这个默认限制,之前Azure正常可能是配置或查询逻辑的变化导致的,咱们一步步来排查解决:

最可能的原因:Azure默认的查询结果上限

Azure Cosmos DB for MongoDB API为了控制请求单位(RU)的消耗,默认会给未显式指定limit()的查询设置100条的结果上限,加上第一条刚好就是你看到的101条。之前正常可能是因为之前的查询逻辑里隐式处理了分页,或者最近Azure的默认配置有调整。

解决方法:显式设置足够大的limit

把你的查询代码修改为显式添加limit(),数值设为比你预期的文档总数(140)大的数就行:

FindIterable documents = db.getCollection("employees").find(query).limit(200) // 200足够覆盖140条数据
def outList = documents.collect {it}

备选方案:确保游标完整遍历

有时候collect方法可能只取了游标返回的第一批次数据(Azure默认批次大小是100),手动遍历游标能保证获取所有结果:

def outList = []
MongoCursor cursor = db.getCollection("employees").find(query).iterator()
while (cursor.hasNext()) {
    outList.add(cursor.next())
}

额外排查步骤

  • 确认集合实际文档数:在Mongo shell或者Azure Cosmos DB资源管理器里执行db.employees.countDocuments({dept: 'tech'}),确认确实有140条文档,排除数据被误删的可能。
  • 检查查询是否被修改:确认你的BasicDBObject没有被代码里其他逻辑意外修改,比如有没有额外的过滤条件被悄悄加上。

内容的提问来源于stack exchange,提问作者Xal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:29:46