调用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
相关产品推荐
相关产品推荐

