首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB的2个知识点

MongoDB的2个知识点

作者头像
AsiaYe
发布2020-12-29 11:14:08
4140
发布2020-12-29 11:14:08
举报
文章被收录于专栏:DBA随笔DBA随笔

//

MongoDB的2个知识点

//

01

连接数

在MySQL中,我们可以通过show processlist的命令来查看当前的连接数,使用max_connections和max_user_connections参数来查看最大连接数,那么在MongoDB中我们如何查看连接相关的信息呢?

常见的三种方法如下:

----------方法一:查看系统最大连接--------------
找到进程号,然后查看max open files 大小:
ps -ef|grep  24208
mon24208   674     1 15 Aug11 ?        18-18:20:56 /usr/local/sinasrv2/mongodb-linux-4.0.4/bin/mongod -f /data1/mongo24208/mongo24208.conf
[root@10.13.16.102 ~]# cat /proc/674/limits | grep "Max open"
Max open files            288000               288000               files

---------方法二:查看当前连接数---------------
coredata10:PRIMARY> db.serverStatus().connections
{ "current" : 187, "available" : 9813, "totalCreated" : 5619230 }

这两个的关系:
current + available = totalCreated  < max open files
9813+187=10000< 288000

---------方法三:查看配置文件的最大连接----------------
直接查看mongodb.conf中的配置文件
net:
    port: 24208
    bindIp: 10.13.16.102,127.0.0.1
    maxIncomingConnections: 10000

默认情况下,最大连接数是max file limits的0.8倍。这是出于一种保护性的考虑,不可能把所有的open file句柄都拿来维护连接数,还需要保持对磁盘上文件的访问。

02

查询的limit、count和skip用法

1、使用count()方法查询表中的记录数。两种方法都可以。
> db.yeyz.find()
{ "_id" : ObjectId("5fa172c86e2f58da10d28aa3"), "name" : "yeyz" }
{ "_id" : ObjectId("5fa1743ac69e2dfa962884d7"), "name" : "zhangsan" }
{ "_id" : ObjectId("5fa1776dbb2e0d2bc89a21fb"), "name" : "lisi" }
> db.yeyz.find().count()
3
> db.yeyz.count()
3



2、skip()方法可以用来跳过指定条记录

> db.yeyz.find()
{ "_id" : ObjectId("5fa172c86e2f58da10d28aa3"), "name" : "yeyz" }
{ "_id" : ObjectId("5fa1743ac69e2dfa962884d7"), "name" : "zhangsan" }
{ "_id" : ObjectId("5fa1776dbb2e0d2bc89a21fb"), "name" : "lisi" }

> db.yeyz.find().skip(1).limit(2)
{ "_id" : ObjectId("5fa1743ac69e2dfa962884d7"), "name" : "zhangsan" }
{ "_id" : ObjectId("5fa1776dbb2e0d2bc89a21fb"), "name" : "lisi" }

> db.yeyz.find().skip(2).limit(2)
{ "_id" : ObjectId("5fa1776dbb2e0d2bc89a21fb"), "name" : "lisi" }



3、count()如果直接接在find()后面,没有加参数,则返回的是表中的所有记录
如果count()接在find()或者其他条件后面,要统计结果的条数,则需要补充count(非0值)或者count(true)

> db.yeyz.find().skip(2).limit(2).count()
3
> db.yeyz.find().skip(2).limit(2).count(1)
1
> db.yeyz.find().skip(2).limit(2).count(true)
1

需要注意的是count(),如果前面有其他的函数,最后想要统计函数过滤之后的count结果,需要在count函数中传入一个非0的参数或者传递一个true,否则,得到的结果,是集合里面所有文档的总数。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档