mongo实践-透过js shell操作mongo
mongo实践-通过js shell操作mongo
保存命令:
j={name:"wangjingjing",age:15}
db.user.save(j);
查询命令:
var cursor = db.user.find();
while(cursor.hasNext())printJson(cursor.next());
printJson(cursor[4]);
var arr = cursor.toArray();
db.user.find({name:"wangjingjing"});
//select age from user where name='wangjingjing'
db.user.find({name:"wangjingjing"},{age:true});
db.user.findOne();
db.user.find().limit(3);
修改命令:
db.user.update({name:"wangjingjing"},{$set:{name:"jingjing"}});
db.user.update({name:"wangjingjing"},{$inc:{age:10}}); //给age增加10
db.user.update({name:"wangjingjing"},{$push:{habit:["basketball","football"]}});
删除命令:
db.user.remove({name:"jingjing"})
高级查询命令:
db.user.find({x:{$gt:3}}); x>3
db.user.find({x:{$lt:3}}); x<3
db.user.find({x:{$gte:3}}); x>=3
db.user.find({x:{$lte:3}}); x<=3
db.user.find({x:{$lte:3,$gte:2}}); 2<=x<=3
var x = {x:[3,4,5]}
db.user.save(x);
db.user.find({x:{$all:[3,4]}}) 匹配
db.user.find({x:{$all:[3,4,6]}}) 不匹配
db.user.find({x:{$in:[3,4,6]}}) 匹配
db.user.find({x:{$nin:[3,4,6]}}) 匹配
db.user.find({x:{$exsits:true}}) 匹配有包含x的属性
db.user.find({x:{$mod:[6,1]}}) 取模6等于1
db.user.find({x:{$ne:1}}) x!=1
db.user.find({$or:[{name:"jing"],[age:10]}) 或操作
db.user.find({x:{$size:3}}) 数组x的元素个数为3
db.user.find().skip(1).limit(1).count(true); 第二个记录
db.user.find().sort({age:1});升序
db.user.find().sort({age:-1});降序
导出文件
mongoexport -d user -c user -o user.bat
导入文件
mongoimport -d user -c user user.bat
备份文件
mongodump -d user -o my_user_dump
恢复文件
mongorestore -d user my_user_dump\user\
安全访问
mongod --bind_ip 192.168.1.103 --port 28018
mongo 192.168.1.103:28018
建立索引
db.user.ensureIndex({age:1},{background:true}); 升序
db.user.getIndexes();
解释执行
db.user.find().explain()
复制集
Replica Set使用指南(在单机上配置)
简介:
一个Replica-Set是在一组N个mongod服务一起协作来进行后援支持。
搭建一个replica-set需要两个步骤:在每个节点上启动服务;初始化这个set。
标准模式下,1个set包含3个节点。我们现在就在同一个服务器上搭建一个。
一旦mongod服务节点都启动了,我们需要一个指令来初始化这个set。几秒钟之后,三个节点中会选择出一个
主控节点(master node),之后我们就可以向这个set中写入或者查询数据了。
步骤一:
分别为3个节点分配数据存放的位置空间
$ mkdir -p /data/r0
$ mkdir -p /data/r1
$ mkdir -p /data/r2
之后,使用 --replSet 参数启动mongod服务,这个参数需要我们指定replica-set的名称,这里我们称我们的这个set为“foo”
$ mongod --replSet foo --port 27017 --dbpath /data/r0
$ mongod --replSet foo --port 27018 --dbpath /data/r1
$ mongod --replSet foo --port 27019 --dbpath /data/r2
现在3个节点都跑起来了。这时,每个节点应该都打出如下的警告信息:
————————
Mon Aug 2 11:30:19 [startReplSets] replSet can't get local.
system.replset config from self or any seed (EMPTYCONFIG)
————————
不要紧张,这是因为我们还没有初始化这个set.
步骤二:
我们可以从任意3个节点中的一个来运行 replSetInitiate 命令来初始化这个set.
[kyle@arete ~$]$ mongo localhost:27017
MongoDB shell version: 1.6.3
connecting to: localhost:27017/test
> config = {_id: 'foo', members: [
{_id: 0, host: 'localhost:27017'},
{_id: 1, host: 'localhost:27018'},
{_id: 2, host: 'localhost:27019'}]
}
> rs.initiate(config);
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
我们需要配置config这个对象,指明set的名称和这个set下的成员。然后将config传递给rs.initiate().
如果到这里一切都顺利的话,我们会得要一个信息说:这个set会在1分钟内启动完成。在这个时间段内,有一个
节点会被选择为主控节点(master节点)。
如果想查看这个set的当前状态的话,使用rs.status这个命令:
> rs.status()
{
"set" : "foo",
"date" : "Mon Aug 02 2010 11:39:08 GMT-0400 (EDT)",
"myState" : 1,
"members" : [
{
"name" : "arete.local:27017",
"self" : true,
},
{
"name" : "localhost:27019",
"health" : 1,
"uptime" : 101,
"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",
},
{
"name" : "localhost:27018",
"health" : 1,
"uptime" : 107,
"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",
}
],
"ok" : 1
}
这里有个值"myState",如果这个值为1,说明是主控节点(master);如果是 2 ,说明是从属节点(slave).
在同一时刻,每组 Replica Sets 只有一个 Primary,用于接受写操作。而后会异步复制到其他成员数据库中。一旦
primary 死掉,会自动投票选出接任的 primary 来,原服务器恢复后成为普通成员。如果数据尚未从先前的 primary
复制到成员服务器,有可能会丢失数据。
PRIMARY> db.test.insert({“name”:”foobar”,”age”:25})
PRIMARY> db.test.find()
{ “_id” : ObjectId(“4f4f38fc47db2bfa5ceb2aee”), “name” : “foobar”, “age” : 25 }
SECONDARY> db.test.find()
error: { “$err” : “not master and slaveok=false”, “code” : 13435 }
SECONDARY> db.test.insert({“name”:”foobar”,”age”:25})
not master
在主库上设置slaveok=ok (经过试验,发现需要在从库上设置ok)
PRIMARY> db.getMongo().setSlaveOk()
SECONDARY> use test
switched to db test
SECONDARY> db.test.find()
{ “_id” : ObjectId(“4f4f38fc47db2bfa5ceb2aee”), “name” : “foobar”, “age” : 25 }
然后kill掉主库,会候选出一个作为主库,当修复后,就变成从库了
插入数据时生成的id分为四个段 时间戳、主机号、进程号、计数器
http://www.myexception.cn/javascript/1227152.html
mongo实践-透过js shell操作mongo的更多相关文章
- mongo的runCommand与集合操作函数的关系
除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...
- java拾遗5----Java操作Mongo入门
Java操作Mongo入门 参考: http://api.mongodb.com/java/3.2/ http://www.runoob.com/mongodb/mongodb-java.html h ...
- 每篇半小时1天入门MongoDB——2.MongoDB环境变量配置和Shell操作
上一篇:每篇半小时1天入门MongoDB——1.MongoDB介绍和安装 配置环境变量 Win10系统为例 右键单击“此电脑”——属性——高级系统设置——高级——环境变量,添加C:\Program F ...
- MongoDB的Shell操作
前言 本文从介绍了MongoShell 的配置.脚本.数据类型和其他指令. MongoShell - 简介 MongoShell是一个互动的JavaScript接口的MongoDB,可以使用Mongo ...
- MongoDB shell操作
shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的.使用shell 命令,需要启动mongo.exe. 常用shell命令如下: 1. ...
- node.js高效操作mongodb
node.js高效操作mongodb Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为Jav ...
- shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)
如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
- Mongo DB Study: first face with mongo DB
Mongo DB Study: first face with mongo DB 1. study methods: 1. Translate: I am the mongo DB organiz ...
随机推荐
- PCB 机器学习(ML.NET)初体验实现PCB加投率预测
使用ML.NET建立PCB加投率模型对单一蚀刻工序进行加投率预测, 此实例为最简单预测,要想实现全流程加投率预测挑战难度还是挺大的,可以查看另一种关于大数据在PCB行业应用---加投率计算基本原理:P ...
- robotframework - 基础关键词
robotframework基础关键词如下: 1.可在python.notepad++ 编辑: *** Settings *** *** Test Cases ***variable ${a} Set ...
- Syntax error on token ";", , expected 错误
eclipse错误提示如图: 错误代码如图: 一开始百思不得其解,后来终于发现问题的原因所在,java中变量的声明可以不在方法中,但语句只能出现在方法中,可以再声明变量的时候就赋初值,但如果要单独赋值 ...
- LOGO免费在线设计
http://www.logomaker.com.cn/ 藏经阁技术资料分享群二维码
- Ubuntu 16.04 安装OpenSSH7.4
前几天突然收到接到网安总队下发通知说我们在aws里面的服务器存在重大漏洞及安全隐患.必须在规定时间内修改.我们收到邮件打开Excel发现这些问题 是由于OpenSSH版本太低导致的.于是便安排紧急 ...
- C# 访问mongodb数据库
1.引用四个mongodb动态库MongoDB.Bson.dll,MongoDB.Driver.Core.dll,MongoDB.Driver.dll,MongoDB.Driver.Legacy.dl ...
- 学习笔记 第五章 使用CSS美化网页文本
第五章 使用CSS美化网页文本 学习重点 定义字体类型.大小.颜色等字体样式: 设计文本样式,如对齐.行高.间距等: 能够灵活设计美观.实用的网页正文版式. 5.1 字体样式 5.1.1 定义字体 ...
- Sql server 本地临时表、全局临时表的区别
创建了本地临时表#Tmp.全局临时表##Tmp: 本地临时表: 取名以#开头.如:#Tmp(会自动加上一串后缀) 只有当前的连接可以访问 连接关闭后,本地临时表自动释放 全局临时表: 取名以##开头. ...
- Java获取一个文件夹内的所有文件(包括所有子文件夹内的)
输入文件数组.文件夹路径 返回的文件在输入的文件数组中 private void getFiles(ArrayList<File> fileList, String path) { Fil ...
- VC++函数只被调用一次
如何保证某个函数只被调用一次 一个函数caller会在其内部调用另外一个函数callee,现在的情况是,caller可能会在多个地方被多次调用,而你希望callee只在第一次被调用时被调用一次.一 ...