Mongoose解决MongoDB弃用警告

本文档详细介绍了如何处理Mongoose在使用MongoDB时遇到的弃用警告,包括如何替换`findAndModify`,调整连接字符串解析器选项,解决`countDocuments`和`estimatedDocumentCount`的警告,以及更新索引定义。通过遵循提供的解决方案,可以确保应用与最新的MongoDB驱动程序兼容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB弃用警告

原文链接:https://mongoosejs.com/docs/deprecations.html#-findandmodify-

MongoDB Node.js驱动程序中有几个弃用,Mongoose提供了解决这些弃用警告的选项

摘要

要修复所有弃用警告,请按照以下步骤操作:

  • mongoose.set('useNewUrlParser', true)
  • mongoose.set('useFindAndModify', false)
  • mongoose.set('useCreateIndex', true)
  • update()替换为updateOne(),updateMany(),replaceOne()
  • remove()替换为deleteOne()deleteMany()
  • count()替换为countDocuments(), 除非您想要计算整个集合中有多少文档(没有过滤器)。在后一种情况下,使用estimatedDocumentCount()

useNewUrlParser选项

默认情况下,mongoose.connect()会打印出以下警告:

DeprecationWarning: current URL string parser is deprecated, and will be
removed in a future version. To use the new parser, pass option
{ useNewUrlParser: true } to MongoClient.connect.

  
  
  

    MongoDB Node.js驱动程序重写了用于解析MongoDB连接字符串的工具。因为这是一个很大的变化,所以他们将新的连接字符串解析器放在一个标志后面。要打开此选项,请将useNewUrlParser选项传递给 mongoose.connect()mongoose.createConnection()

    mongoose.connect(uri, {
         useNewUrlParser: true })
    mongoose.createConnection(uri, {
         useNewUrlParser: true })
    
      
      
      

      您还可以将全局选项设置useNewUrlParser为默认情况下为每个连接打开。

      mongoose.set('useNewUrlParser', true)
      
        
        
        

        要测试您的应用{ useNewUrlParser: true },您只需要检查您的应用是否成功连接。一旦Mongoose成功连接,URL解析器就不再重要了。

        usefindAndModify选项

        如果使用Model.findOneAndUpdate(),默认情况下会看到以下弃用警告之一。

        DeprecationWarning: Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `useFindAndModify` option set to false are deprecated. See: https://mongoosejs.com/docs/deprecations.html#-findandmodify-
        DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
        
          
          
          

          Mongoose很findOneAndUpdate()早就预定了MongoDB驱动程序的findOneAndUpdate() 功能,所以它使用了MongoDB驱动程序的findAndModify()功能。您可以使用useFindAndModify全局选项选择使用MongoDB驱动程序的功能。

          // 要让 mongoose 使用 `findOneAndUpdate()`.注意选项设置为`true`
          // 默认选项为 false.
          mongoose.set('useFindAndModify'
          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

          当前余额3.43前往充值 >
          需支付:10.00
          成就一亿技术人!
          领取后你会自动成为博主和红包主的粉丝 规则
          hope_wisdom
          发出的红包
          实付
          使用余额支付
          点击重新获取
          扫码支付
          钱包余额 0

          抵扣说明:

          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

          余额充值