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. MongoDB常用操作命令大全

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作.输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令 如:如果你想创建一个 ...

  2. lucene和es总结

    一.首先介绍lucene涉及到的排序过程 1.1.如何自定义排序对象 你可以自定义collector对象: 亦可以自定义comparator对象: 可以自定义scoredoc对象,决定如何处理结果集合 ...

  3. Allegro之Win7下不能实时刷新操作显示的问题

    Allegro软件主界面下: setup-> user preferences-> display->opengl中选定disable_opengl,即关掉OpenGL后,再重新启动 ...

  4. [原创]MySQL innodb_rollback_on_timeout参数对锁的影响

    环境:Server version:         5.6.21-log MySQL Community Server (GPL) 前提提要: innodb_rollback_on_timeout是 ...

  5. php获取excel所有的批注

    phpexcel下载:https://github.com/PHPOffice/PHPExcel <?php /** *获取excel所有的批注 * * 存在编码问题,xls和xlsx的批注编码 ...

  6. SQL Server表分区的NULL值问题

    SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,但是本人觉得已经够用了 虽然MySQL支持四种分区类型:RANGE分区.LIST分区.HASH分区 ...

  7. 解读ASP.NET 5 & MVC6系列(5):Configuration配置信息管理

    在前面的章节中,我们知道新版的MVC程序抛弃了原来的web.config文件机制,取而代替的是config.json,今天我们就来深入研究一下配置文件的相关内容. 基本用法 新版的配置信息机制在Mic ...

  8. CI-持续集成(1)-软件工业“流水线”概述

    CI-持续集成(1)-软件工业“流水线”概述 1   概述 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次, ...

  9. android服务里生成通知点击后返回正在运行的程序和当前的Activity

    想在服务里生成一个通知,并且点击通知打开当前应用程序下单当前活动,折腾了半天,网上的那些都不靠谱,试了半天,最后把ActivityManager和反射都用进来了,终于解决了这个问题.这样在服务中想恢复 ...

  10. [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)

    说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...