1. 如何从备份节点读取数据

默认是不允许的,会报如下错误:

testReplSet:SECONDARY> show dbs
--19T10::03.196+ E QUERY [thread1] Error: listDatabases failed:{ "ok" : , "errmsg" : "not master and slaveOk=false", "code" : }

如果要允许备份节点读取数据,需要执行以下命令

db.getMongo().setSlaveOk()

2. 关于备份集

1> 客户端在单机服务器上执行的操作,都可以发送到主节点执行(读,写,执行命令,创建索引等)

2> 客户端不能在备份节点上执行写操作

3> 默认情况下,客户端不能从备份节点读取数据,除非显式地执行了setSlaveOk操作。

4> 无法将单机服务器转换为副本集,除非关服务重新初始化,所以建议,即使只有一个服务器,也配置成副本集的形式,这样后续添加节点就不需要停服务了。

5> 副本集中很重要的一个概念是“大多数”:选择主节点需由大多数决定,主节点只有在得到大多数支持时才能继续作为主节点,写操作被复制到大多数成员时这个写操作

才是安全的。

3. 如何查看服务器的命令行参数

db.serverCmdLineOpts()

4. too many chunks to print, use verbose if you want to force print

可通过执行以下命令查看

printShardingStatus(db.getSisterDB("config"),1);

5. MongoDB的Driver如何使用

// 通常的用法

// global MongoClient object
mongoClient = new MongoClient("mongodb://root:****@host1:port1,host2:port2/admin?replicaSet=repl00& maxPoolSize=100"); // request1
db1 = mongoClient.getDatabase("db1");
coll1 = db1.getCollection("coll1");
coll1.find({...}) // request2
db2 = mongoClient.getDatabase("db2");
coll2 = db2.getCollection("coll2");
coll2.update({...}) // requestN
...
// 错误的用法
// request1
mongoClient = new MongoClient("mongodb://root:****@host1:port1,host2:port2/admin?replicaSet=repl00& maxPoolSize=100");
db1 = mongoClient.getDatabase("db1");
coll1 = db1.getCollection("coll1");
coll1.find({...});
mongoClient.close(); // request2
mongoClient = new MongoClient("mongodb://root:****@host1:port1,host2:port2/admin?replicaSet=repl00& maxPoolSize=100");
db2 = mongoClient.getDatabase("db2");
coll2 = db2.getCollection("coll2");
coll2.update({...});
MongoClient.close() // requestN
...

6. 如何查看当前连接数

rs0:PRIMARY> db.serverStatus().connections
{ "current" : , "available" : , "totalCreated" : }

7. 如何查看,kill当前的操作

rs0:PRIMARY> db.currentOp()
rs0:PRIMARY> db.killOp(opid)

8. 查询所有正在等待锁的写操作

db.currentOp(
{
"waitingForLock" : true,
$or: [
{ "op" : { "$in" : [ "insert", "update", "remove" ] } },
{ "query.findandmodify": { $exists: true } }
]
}
)

9. 查询所有操作db1并且执行时间已超过3s的请求

db.currentOp(
{
"active" : true,
"secs_running" : { "$gt" : },
"ns" : /^db1\./
}
)

10. 查看某个collection有多少条记录

db.getCollection('collection').count()

11. 查看所有用户账号信息

查看全局所有账户

db.system.users.find().pretty()

查看当前库下的账户

use admin
show users

12. [thread1] Error: not master and slaveOk=false 

rs.slaveOk()

13.  如何调整mongo db的显示条数

DBQuery.shellBatchSize = 200

14. 检查主从延迟情况

rs.printSlaveReplicationInfo()

15. 如何查看某个db下所有collection的记录数

db = db.getSiblingDB("test");
cols = db.getCollectionNames();
cols.forEach(function(col) {
print(col,db[col].find().count());
});

16. Mongo下载地址

https://www.mongodb.org/dl/linux/x86_64-rhel62?_ga=2.136175799.746443501.1557019877-1817805648.1546935097

17. 创建keyfile

openssl rand -base64  > <path-to-keyfile>
chmod <path-to-keyfile>

18. oplog最近10条记录

db.oplog.rs.find().sort({"ts":-1}).limit(10).toArray()

19. MongoDB批量删除

var ids = db.collection.find({})
.sort("id", -)
.limit()
.toArray()
.map(ele => ele._id); db.collection.remove({_id: {$in: ids}})

deleteMany()不支持limit子句

MongoDB碎碎念的更多相关文章

  1. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

  2. 一些关于Linux入侵应急响应的碎碎念

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  3. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  4. Jerry的碎碎念:SAPUI5, Angular, React和Vue

    去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...

  5. 结对编程ending-我和洧洧的碎碎念

    应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...

  6. C语言 · 分分钟的碎碎念

    算法提高 分分钟的碎碎念   时间限制:1.0s   内存限制:256.0MB      问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...

  7. 最近关于Qt学习的一点碎碎念

    最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...

  8. Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念

    算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...

  9. MySQL碎碎念

    1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...

随机推荐

  1. css制作对话框

    当你发现好多图都能用css画出来的时候,你就会觉得css很有魅力了.//我是这么觉得的,先不考虑什么兼容问题 像漫画里出现的对话框,往往都是一个对话框然后就加入一个箭头指向说话的那一方,来表示这个内容 ...

  2. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

  3. web程序的路径笔记

    "/"与”\“区别:”/“是unix系统区分文件层级的标志,因为当前web应用程序在服务器端大都使用基于unix系统开发的操作系统,所以web程序包括浏览器里url都遵以”/“来区 ...

  4. C代码实现非循环单链表

    C代码实现非循环单链表, 直接上代码. # include <stdio.h> # include <stdlib.h> # include <malloc.h> ...

  5. JavaScript鼠标经过图片的放大镜效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. python将图片转换为Framebuffer裸数据格式(终端显示图片)

    要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可. 但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显 ...

  7. solr使用语法笔记

    http://127.0.0.1:8095/shangbiao_sale/select?sort=id+desc&fq=&wt=json&json.nl=map&q=s ...

  8. android培训机构排名

    Android开发行业的热度打开了Android培训领域的市场,我们会发现有很多的Android培训机构都在大势宣传自己的师资.就业情况.教学环境等 ,然而到底要选择哪个呢?令很多的人困惑.2015年 ...

  9. FMX保存JPG格式的Stream

    刚刚看以前的笔记,估计这个用的人很少 var surf:TBitmapSurface; astream:TmemoryStream; begin surf:=TbitmapSurface.Create ...

  10. 安装ant

    从ant官方网站下载ant安装包:apache-ant-1.9.7-bin.tar.gz,解压 tar xvf apache-ant-1.9.7-bin.tar.gz -C /usr/java/ 配置 ...