zoukankan      html  css  js  c++  java
  • 4_(知识补充)连接mongoDB数据库出现的代码警告

    4_(知识补充)连接mongoDB数据库出现的代码警告

    连接数据库出现的代码警告

    第一个警告:旧的解析器准备废弃,要使用新的解析器

    (node:4296) 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.

    解决方法:在connect函数中加入第二个参数, { useNewUrlParser: true } 该参数是一个对象。配置完成后该警告消失。

    1st warning
    1st warning

    mongoose.connect('mongodb://localhost/blog', {useNewUrlParser: true ,useUnifiedTopology: true})

    第二个警告:旧的服务器侦听器和监听器准备废弃,因为网络拓扑结构(网络节点的连接方式)更新了

    (node:4296) [MONGODB DRIVER] Warning: Current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.

    解决方法:在connect函数中加入第二个参数,{ useUnifiedTopology: true } 该参数是一个对象。配置完成后该警告消失。

    2nd warning
    2nd warning

    第三个警告:旧的索引器效率不高,使用新的索引器

    (node:14900) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

    解决方法:在开始连接数据库之前,加入以下代码,mongoose.set('useCreateIndex', true) ;

    3rd warning
    3rd warning

    索引拓展

    如果没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。如果查询存在适当的索引,MongoDB可以使用索引来限制它必须检查的文档数,索引的作用就像是查字典一样,能帮助我们限制数据的选择范围,进一步减少数据库查询的时间和资源,所以可知数据库索引用于加速查询。它有两种数据结构:Hash索引和B+ Tree索引。Hash索引底层是哈希表,哈希表是一种以key-value存储数据的结构,所以多个数据在存储关系上是完全没有任何顺序关系的,所以,对于区间查询是无法直接通过索引查询的,就需要全表扫描。所以,哈希索引只适用于等值查询的场景。而B+ Tree是一种多路平衡查询树,所以他的节点是天然有序的(左子节点小于父节点、父节点小于右子节点),所以对于范围查询的时候不需要做全表扫描。索引的好坏,取决于搜索深度,B+树可以说是制式算法,不只是数据库里会用它。对于有限元素的索引,比如路由表的搜索,哈希的效率可以很高。机械硬盘时代,索引还要考虑硬盘IO。数据库的底层很复杂。

  • 相关阅读:
    .Net 并发写入文件的多种方式
    变量命名神器——CODELF
    Python打包发布
    python工具——NumPy
    python工具——Pandas
    没事早点睡
    python工具——pixellib
    Tensorflow在Windows下使用踩坑
    python工具——Tesseract
    python工具——wordcloud
  • 原文地址:https://www.cnblogs.com/singledogpro/p/14982302.html
Copyright © 2011-2022 走看看