MongoDB的使用

MongoDB的使用

1、使用navicat连接

      为了方便开发,采用navicat连接。需要注意的是navicat只有新版才能连接mongodb,我这里用的最新版本v15。没有安装最新版navicat的盆友,阔以参照下面链接下载安装:

https://www.jianshu.com/p/3af7fccc22c7

     

     测试连接:

     

     查看文档时,有几个很有用的功能按钮:

     

 

     基础的使用比较简单,可查看相关使用教程,比如菜鸟教程:https://www.runoob.com/mongodb/mongodb-tutorial.html

    2、注意事项

    针对使用中遇到的问题,这里列出几点注意事项:

    1)索引

    a.  合理创建索引

    一定要合理创建索引, 有很多人都被宣传片迷惑,认为mongo的读取速度本身就应该很快,所以从mysql转过来后,就连创建索引都忘了,当表(collection) 很大时,不创建索引是非常影响性能的。

比如:db.users.createIndex({open: 1, close: 1}, {background: true})

    b.  创建索引导致数据阻塞

    在前台建索引时需要占用一个写锁(而且不会临时放弃),如果集合的数据量很大,建索引通常要花比较长时间,特别容易引起问题。

    解决的方法很简单,MongoDB 提供了两种建索引的访问,一种是 background 方式,不需要长时间占用写锁,另一种是非 background 方式,需要长时间占用锁。使用 background 方式就可以解决问题。

    例如,为超大表 users 建立索引

    千万不要使用:

    db.users.createIndex({open: 1, close: 1})

    而应该使用:

    db.users.createIndex({open: 1, close: 1}, {background: true})

    2)只返回想要的列

    大表查询时,只返回你想要的列。特别是单collection字段数据量比较大时,非常容易引起性能问题。

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )

    3)避免使用array

    MongoDB 的 Array 字段是比较独特的一个特性,它可以在单个 document 里存储一些简单的一对多关系。

    但是,我们尽量避免在model里面使用Array类型的字段,因为使用了Array,查询时,不可避免的会使用in操作,in操作无法利用索引,这个在关系型数据库里面也是存在的,大表操作一定要避免。

    比如:这里的value就是一个Array类型的字段

 1 {
 2     "_id": ObjectId("60ae5841e72f0000e3001c74"),
 3     "level": 2,
 4     "pid": "60ae5116e72f0000e3001c51",
 5     "value": [
 6         {
 7             "key": "v1",
 8             "name": "法院名称",
 9             "value": "法院"
10         },
11         {
12             "key": "v2",
13             "name": "指标名称/值",
14             "value": "余额(万元)"
15         },
16         {
17             "key": "v3",
18             "name": "指标名称/值",
19             "value": "到账/发放总额(万元)"
20         }
21     ],
22     "type": "json",
23     "isDelete": NumberInt("0")
24 }

    4)一次返回所有数据

    尽量一次返回所有需要的数据,避免GET_MORE,避免游标操作,当用户进行查询迭代时,mongo会首先返回一个数据块供你迭代,当你迭代的数据超过这个数据块时,mongoid 发起 GET_MORE 命令移动游标获取下一个数据块,而就是这个移动游标的操作就非常慢,特别是你返回的列比较多的时候,性能非常低。每次返回的数据块的大小是由batchSize控制的,可以通过修改它的默认值进行控制。

    5)事务

    mongodb不支持事务,所以你一定要考虑清楚,权衡利弊。

 

    参考链接: https://www.cnblogs.com/l1pe1/p/7871859.html 

posted @ 2021-07-12 16:31  欢乐豆123  阅读(178)  评论(0编辑  收藏  举报