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

DocumentDB设置size为200仍仅返回100条文档,如何取消该限制?

问题原因及解决方案

你的代码里聚合管道的操作符名称错误,MongoDB(及兼容它的DocumentDB)的聚合阶段必须以$开头,你自定义的matchOp、lookupOp等键名不会被数据库识别,导致真正生效的只有$skip和$sort阶段,limit逻辑完全没起作用,加上DocumentDB聚合查询默认返回100条结果,所以最终只拿到100条数据。

修正后的代码

session := dao.session.Copy()
defer session.Close()

pipeline := []bson.M{
    {
        "$match": bson.M{
            "campaign": campaignID,
        },
    },
    {
        "$lookup": bson.M{
            "from":         contactsCollection,
            "localField":   "contactid",
            "foreignField": "_id",
            "as":           "contact",
        },
    },
    {
        "$unwind": contactAttribute,
    },
    {
        "$sort": bson.M{"_id": 1},
    },
    {
        "$skip": offset,
    },
    {
        "$limit": pageSize,
    },
}
var result []Test
err := session.DB(crmDB).C(dealsCollection).Pipe(pipeline).All(&result)
return result, err

额外说明

  1. 调整阶段顺序:把$sort移到$skip和$limit之前,确保排序是针对全量符合条件的数据,避免先跳过再排序导致的分页逻辑错误。
  2. 取消默认限制:只要正确使用$limit指定你需要的数量(比如200),数据库就会返回对应条数的结果——之前的问题完全是操作符名称错误导致$limit未生效,无需额外取消默认限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:15:19