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

调用MongoDB Data API查询文档时提示projection无效的问题

问题根源与修复方案

你的核心错误是把文档筛选条件写到了projection字段里——projection的作用是控制查询返回哪些字段,而筛选符合条件的文档必须用filter字段。

正确代码示例

如果你的ids是字符串格式的ObjectId值,需要转换成MongoDB识别的$oid格式:

items = await axios.post(`${process.env.DB_API_URL}/find`, {
    "collection":"",
    "database":"",
    "dataSource":"",
    "filter": { // 用filter存放筛选条件
        '_id': {
            $in : [
                ...ids.map(id => ({$oid: id}))
            ]
        }
    },
    "projection": {} // 可选:指定返回字段,比如只返回_id写{_id:1},空对象返回所有字段
}, {
    headers: {
        'api-key': process.env.DB_API_KEY,
        'Content-Type': "application/json"
    }
})

如果你的MongoDB Data API环境支持直接传入字符串形式的ObjectId(部分托管环境会自动转换),可以简化成:

items = await axios.post(`${process.env.DB_API_URL}/find`, {
    "collection":"",
    "database":"",
    "dataSource":"",
    "filter": {
        '_id': {
            $in : ids // 直接传入字符串数组
        }
    },
    "projection": {}
}, {
    headers: {
        'api-key': process.env.DB_API_KEY,
        'Content-Type': "application/json"
    }
})

额外说明

  • filter字段:用来定义查询的匹配条件,所有像$in、$eq这类筛选操作符都必须放在这里。
  • projection字段:用来指定返回哪些字段,比如{name:1, _id:0}表示返回name字段、排除_id字段;空对象则返回文档所有字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:04:57