连接mongodb
mongo
默认连接到本地端口27017
mongo —host 123.57.244.111 —port 27017
连接远程数据库
插入数据
插入一条数据:
db.test.insert({title: “1111111111111111111”})
循环插入数据:
for (var i = 0; i < 100; i++) {
db.test.insert({title: i * 1000})
}
插入数组:
db.test.insert([{title: “aaaaaaaaaaaaa”}, {title: “bbbbbbbbbbbb”}])
聚合
插入一个0到100的随机年龄 for (var i = 0; i < 100; i++) { db.test.insert({age: Math.round(Math.random() * 100)}); }
统计同一个年龄出现的次数 db.test.aggregate([{$group: {_id: “$age”, count: {$sum: 1}}}])
查询
查询所有数据
db.test.find()
查询大于90000的
db.test.find({title: {$gt: 90000}})
查询大于90000小于93000
db.test.find({title: {$gt: 90000, $lt: 93000}})
查询一条数据
db.test.findOne()
查询存在字段name的
db.test.find({name: {$exists: true}})
查询所有文章阅读数大于100的标题
db.posts.find({pv: {$gt: 100}}, {title: 1}).pretty()
查询所有文章阅读数大于100的总数
db.posts.count({pv: {$gt: 100}})
查询所有文章阅读数大于100,标题包含mongo的文章
db.posts.find({pv: {$gt: 100}, title:/mongo/}).pretty()
查询操作符
$eq:等于
$gt:大于
$gte:大于等于
$in:匹配数组中指定的任何值
$lt:大于
$lte:小于等于
$ne:匹配不等于指定值的所有值
$nin:不匹配数组中指定的值
$size:数量为n的数组
$exists:查询存在某个字段
$type:检索集合中匹配的数据类型
删除记录
删除title大于等于2000的
db.test.remove({title: {$gte: 2000}})
删除所有记录
db.test.remove({})
limit方法
该参数指定从MongoDB中读取的记录条数
读取两条记录
db.test.find().limit(2)
skip方法
跳过指定数量的数据
读取第三条数据
db.test.find().skip(2)
sort方法
对数据进行排序,可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列 。
根据title升序排序
db.test.find().sort({title: 1})
distinct方法
返回指定字段的非重复值组成的数组
db.test.distinct(“title”)
查询创建的索引
db.test.getIndexes() 结果:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "nodeblog.test"
},
{
"v" : 2,
"key" : {
"title" : 1,
"count" : 1
},
"name" : "title_1_count_1",
"ns" : "nodeblog.test"
}
]
删除索引,通过上面查到的name,如:title_1_count_1
db.test.dropIndex(“title_1_count_1”)
创建索引
db.test.createIndex({title: 1})
1:升序, -1:降序
创建联合索引:db.test.createIndex({title: 1, count: 1})
查看命令执行时间
在命令后面增加:explain(“executionStats”)
如:db.test.find({title: “hello99999”}).explain(“executionStats”)
结果中的executionTimeMillis就是花费的时间
删除文档
如:删除所有count大于10的文档
db.test.remove({count: {$gt: 10}})
主从复制
下面两个路径必须先创建
1>开启主服务:mongod —master —dbpath e://MongoDB/data/master —port 8888
2>开启从服务:mongod —slave —dbpath e://MongoDB//data//slave —sources 127.0.0.1:8888 —port 8881
可以看到每秒没主服务那边同步数据的日志
[replslave] syncing from host:127.0.0.1:8888
在master中插入一些数据,直接读取slave服务中的数据是不行的。所以关掉master,slave服务,然后按正常方式启动slave 服务,如:mongod —dbpath E://MongoDB//data//slave —port 8881
连接到slave,如:mongo —port 8881,查看之前从master同步过来的数据,如:db.test.find()
监控状态,每秒刷新一次
mongostat —port 27017
查看数据库
show dbs
使用数据库
use users 只有执行了use才能查找表里的内容
查看当前数据库中的集合(表)
show collections
导出数据库
mongodump -d nodeblog -o /root/db/bk20170908
-d:导出的数据库名
-o:导出的目录
恢复数据库
mongorestore -d nodeblog —drop e://MongoDB//data//nodeblog
—drop:删除原有数据库内容