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

Mongodb 4+中findOneAndUpdate的returnNewDocument参数不生效问题咨询

你遇到的参数不生效问题是不同SDK、不同版本驱动的配置项不兼容导致的,具体原因和解决方法如下:

  1. returnNewDocument是MongoDB Realm SDK专属的配置项,原生Node.js MongoDB驱动不识别该参数,所以配置后无效。
  2. 你使用的4.1版本Node.js驱动已经废弃了3.x版本中的new: true配置,官方统一替换为returnDocument参数:
    • 默认值为before,返回更新前的旧文档
    • 配置为after时返回更新后的新文档
  3. 额外注意:4.x版本原生驱动的findOneAndUpdate接口不会直接返回文档对象,会返回一个包含value字段的结果对象,更新后的文档存放在value属性中。

修改后的可用代码如下:

exports.setEmailKey = async (email, key) => {
    try {
        const result = await ucol.findOneAndUpdate(
            { email:email }, 
            { $set: { 
                email_key: key, 
                email_key_time: getEpoc() 
                }
            },
            {   
                upsert: true,
                // 替换原来的returnNewDocument配置
                returnDocument: 'after',
                projection: {
                    _id: 1,
                    email: 1,
                    email_key: 1,
                    email_key_time: 1
                }
            }
        )
        // 4.x驱动需要取value字段拿到目标文档
        return result.value
    } catch (e) {
        log('setEmailKey() Failed', e)
        return null
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 19:15:00