日期:2014-05-16  浏览次数:20472 次

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

}

?