当前位置: 首页 > 面试题库 >

MongoDB mongoose collection.find选项弃用警告

盖绪
2023-03-14
问题内容

通过使用collection.find我查询文档时,我开始在控制台中收到以下警告

DeprecationWarning:不建议使用collection.find选项[fields],在更高版本中将其删除

为什么会看到此错误以及如何解决?(可能的替代方法)

编辑:添加查询

Session
        .find({ sessionCode: '18JANMON', completed: false })
        .limit(10)
        .sort({time: 1})
        .select({time: 1, sessionCode: 1});

猫鼬版本5.2.9


问题答案:

更新:

5.2.10已发布,可在此处下载

使用mongoose.set('useCreateIndex', true);有mongooose调用createIndex上MongoDB的本地驱动程序的方法。

有关文档的更多信息,您可以查看页面
https://mongoosejs.com/docs/deprecations

有关此问题及其修复的更多信息,
请访问https://github.com/Automattic/mongoose/issues/6880

原始答案:

Mongoose 5.2.9版本将本机mongodb驱动程序升级到3.1.3,其中添加了一些更改,以在调用不赞成使用的本机驱动程序方法时引发警告消息。

fieldsoption已弃用,并由projectionoption 代替。

您将不得不等待猫鼬在其末端进行更改,以将场选项替换为投影。该修复程序计划于5.2.10发布。

您可以暂时返回5.2.8,它将取消所有弃用警告。

npm install mongoose@5.2.8

对于所有其他不建议使用的警告,您必须视情况而定。

使用其他收集方法时,您还会看到其他弃用警告。

DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.
DeprecationWarning: collection.save is deprecated. Use insertOne, insertMany, updateOne, or updateMany instead.
DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

findOne*默认情况下,所有的mongoose写方法findAndModify都使用mongodb本机驱动程序中已弃用的方法。

用于mongoose.set('useFindAndModify', false);使mongooose
findOne*在mongodb本机驱动程序上调用适当的方法。

对于remove和分别updatedelete*update*方法替换这些调用。

用于分别saveinsert*/ update*方法替换这些调用。



 类似资料:
  • 问题内容: 我刚刚更新到Django v1.8,并在更新项目之前测试了本地设置,并且发出了弃用警告,这是我从未见过的,对我也没有任何意义。我可能只是忽略了某些内容或误解了文档。 现在,这对我提出了3个问题。 根据文档,Options.app_label除非模型不在应用程序模块之外,否则不是必需的,在我看来,不是这样。其次,无论如何,此行为在1.7中已被弃用,那么为什么它甚至成为问题? 这些应用程序

  • 问题内容: 我有一个React组件,我想在单击时切换一个CSS类。 所以我有这个: 这个问题是ESLint不断告诉我“ this.refs”已贬值。 我该怎么办?我如何解决它而不使用折旧的代码? 问题答案: 您要引用的Lint规则称为 no-string-refs, 并通过以下方式警告您: 之所以收到此警告,是因为已实现了不赞成使用的使用方式(通过使用字符串)。根据您的React版本,您可以执行以

  • 我刚刚更新到rails 4.0.2,我收到了这个警告: [已弃用]我18n.enforce_available_locales将来会默认为true。如果您真的想跳过区域设置的验证,您可以设置I18n.enforce_available_locales=false以避免此消息。 将其设置为false是否存在任何安全问题?

  • 我正在使用scikit-learn 0.14的GridSearchCV,但总是得到以下警告: /Library/Frameworks/epd 64 . framework/Versions/7.2/lib/python 2.7/site-packages/sk learn/grid _ search . py:706:deprecation warning:忽略GridSearchCV的附加参数!

  • 我的项目正在迁移到视图绑定,但与此同时,在查看构建日志时,此警告会分散注意力 警告:“kotlin android extensions”Gradle插件已弃用。请使用本迁移指南(https://goo.gle/kotlin-android-extensions-deprecation)开始使用视图绑定的步骤(https://developer.android.com/topic/librarie

  • JDK 10 版本已弃用 Java 库中的多个 API、特性和选项。以下是相关情况。 不推荐使用 SNMP 监控支持: 现在不推荐使用支持 JVM 的 SNMP 监控和管理支持的 jdk.snmp 模块,并标记为 forRemoval=true。 java.security classes 已弃用:java.security.{Certificate, Identity, IdentityScop