mongodb 基础操作

2019-06-20 775 阅读 0评论
mongodb 安装
#下载:
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
#解压
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
#移动文件
mv  mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
#启动mongodb
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/dblogs --fork
#编辑配置文件,使服务器重启后mongodb自动运行
vi /etc/rc.local
#将以下代码放置文件最后并保存退出
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/dblogs --fork
#查看mongodb进程
[root@localhost mongodb]# pstree -p |grep mongod
|-mongod(36708)-+-{mongod}(36709)
|               |-{mongod}(36710)
|               |-{mongod}(36711)
|               |-{mongod}(36713)
|               |-{mongod}(36714)
|               |-{mongod}(36715)
|               |-{mongod}(36716)
|               |-{mongod}(36717)
|               |-{mongod}(36718)
|               `-{mongod}(36719)

#关闭mongodb
pkill mongodb
#配置环境变量/etc/profle文件。往里面新增一行:
export PATH=$PATH:/usr/local/mongodb/bin
其中$PATH后面跟的是实际安装的mongodb的bin所在目录

#接着重新加载配置:
source /etc/profile
#进入mongodb
mongo
#退出mongodb
exit


show dbs                        #查看数据库
db                              #查看当前数据库
show tables;                    #查看数据表(集合)
db.c1.insert({name:"user1"});   #往c1表里面插入一条json格式的数据
db.c1.insert({name:"user1",age:"30"});   #插入数据
db.c1.find();                   #查看c1表里的数据
db.c1.remove()                  #删除c1集合里的所有数据
db.c1.update({name:"user1"},{name:"user22"})    #修改数据,其他数据会丢失
db.c1.update({name:"user1"},{$set:{name:"user22"}})    #修改数据
db.c1.find({条件})
db.c1.find({"name":"user1"});
db.c1.findOne({条件})
db.c1.findOne({"name":"user1"});

mongodb 数据类型
1、null
2、布尔类型
3、32位整数
4、64位整数
5、64位浮点数
6、字符串
7、符号
8、objectId类型
9、日期
10、正则表达式
11、代码
12、数组
13、内嵌文档

mogodb 基础操作 CURD
#删除当前数据库
db.dropDatabase();
#创建集合
db.createCollection("c1");
#删除集合
db.c1.drop();
#查看集合状态
> db.c2.stats()
#切换数据库
use dbname

1、insert (插入语句)
db.c1.insert({name:"user1"});
db.c1.insert({_id:1,name:"user1"});   #id相同插入失败
db.c1.save({name:"user1"});
db.c1.save({_id:1,name:"user1"});     #id相同会更新
2、remove #删除
db.c1.remove();                         #删除所有数据
db.c1.remove({});                       #删除所有数据
db.c1.remove({name:"user1"});           #删除指定数据
3、find() #查询
db.c1.find();                           #查询所有数据
db.c1.find({name:"user1"});             #查询指定数据
db.c1.find({name:"user1",{name:1});     #查询指定数据显示指定字段,默认显示id,不要显示id{_id:0}
> db.c1.find({name:"user5"});
{ "_id" : ObjectId("5cfbd362517f0b0332b6a890"), "name" : "user5", "age" : "age5", "sex" : "sex5" }
> db.c1.find({name:"user5"},{name:1});
{ "_id" : ObjectId("5cfbd362517f0b0332b6a890"), "name" : "user5" }
> db.c1.find({name:"user5"},{name:1,_id:0});
{ "name" : "user5" }
> db.c1.find({name:"user5"},{name:1,age:1,_id:0});
{ "name" : "user5", "age" : "age5" }
条件表达式
#大于      $gt
> db.c1.find({num:{$gt:5}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a9"), "name" : "user10", "age" : "age10", "num" : 10 }
#大于等于  $gte
> db.c1.find({num:{$gte:5}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a9"), "name" : "user10", "age" : "age10", "num" : 10 }
#小于      $lt
> db.c1.find({num:{$lt:5}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a3"), "name" : "user4", "age" : "age4", "num" : 4 }
#小于等于  $lte
> db.c1.find({num:{$lte:5}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a3"), "name" : "user4", "age" : "age4", "num" : 4 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
#等于  :
> db.c1.find({num:5})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
#不等于 $ne
> db.c1.find({num:{$ne:5}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a3"), "name" : "user4", "age" : "age4", "num" : 4 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a9"), "name" : "user10", "age" : "age10", "num" : 10 }
#查看有多少数据(统计数据)
> db.c1.count()
10
> db.c1.find().count()
10
#排序(升序) sort()
> db.c1.find().sort({num:1});
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a3"), "name" : "user4", "age" : "age4", "num" : 4 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a9"), "name" : "user10", "age" : "age10", "num" : 10 }
#排序(降序) sort()
> db.c1.find().sort({num:-1});
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a9"), "name" : "user10", "age" : "age10", "num" : 10 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a3"), "name" : "user4", "age" : "age4", "num" : 4 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
#分页显示数据 skip(5)-表示从第5条开始显示,显示3条数据 limit(3)
> db.c1.find().skip(5).limit(3)
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
#分页并排序 sort
> db.c1.find().sort({num:-1}).skip(3).limit(3)
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
#判断数组中是否存在值 $all
> db.c2.find({post:{$all:[3,2]}})
{ "_id" : ObjectId("5cfbe5c9517f0b0332b6a8aa"), "name" : "user1", "post" : [ 1, 2, 3, 4, 5 ] }
#判断字段是否存在 $exists
> db.c2.find({name:{$exists:1}})
{ "_id" : ObjectId("5cfbe5c9517f0b0332b6a8aa"), "name" : "user1", "post" : [ 1, 2, 3, 4, 5 ] }
> db.c2.find({age:{$exists:1}})
>
#取余 取出余2,和余1的数据 $mod
> db.c1.find({num:{$mod:[2,1]}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
#$in 包含
> db.c1.find({num:{$in:[1,2,3]}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
#$nin 不包含
> db.c1.find({num:{$nin:[1,2,3,4,5,6]}})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a9"), "name" : "user10", "age" : "age10", "num" : 10 }
#查询并且条件and(查询两个条件同时满足或者多个条件满足)
> db.c1.find({name:"user2",num:22})
{ "_id" : ObjectId("5cfd2bbbdc4a8ca381ed2710"), "name" : "user2", "age" : "age22", "num" : 22 }
#查询或者$or(查询条件范围内)
> db.c1.find({$or:[{name:"user2"},{name:"user3"},{name:"user5"}]})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a2"), "name" : "user3", "age" : "age3", "num" : 3 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a4"), "name" : "user5", "age" : "age5", "num" : 5 }
{ "_id" : ObjectId("5cfd2bbbdc4a8ca381ed2710"), "name" : "user2", "age" : "age22", "num" : 22 }
#查询$nor(查询条件范围外)
> db.c1.find({$nor:[{name:"user2"},{name:"user3"},{name:"user5"}]})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a0"), "name" : "user1", "age" : "age1", "num" : 1 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a3"), "name" : "user4", "age" : "age4", "num" : 4 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a5"), "name" : "user6", "age" : "age6", "num" : 6 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a6"), "name" : "user7", "age" : "age7", "num" : 7 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a7"), "name" : "user8", "age" : "age8", "num" : 8 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a8"), "name" : "user9", "age" : "age9", "num" : 9 }
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a9"), "name" : "user10", "age" : "age10", "num" : 10 }
#查询数组值的个数 $size
> db.c2.find({post:{$size:4}})
{ "_id" : ObjectId("5cfd2e9fdc4a8ca381ed2711"), "name" : "user2", "post" : [ 6, 7, 8, 9 ] }
{ "_id" : ObjectId("5cfd2eabdc4a8ca381ed2712"), "name" : "user2", "post" : [ 16, 17, 18, 19 ] }
> db.c2.find({post:{$size:2}})
{ "_id" : ObjectId("5cfd2f28dc4a8ca381ed2714"), "name" : "user2", "post" : [ 1, 12 ] }
#正则匹配查询
> db.c1.find({name:/user2/})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfd2bbbdc4a8ca381ed2710"), "name" : "user2", "age" : "age22", "num" : 22 }
> db.c1.find({name:/user2/i})
{ "_id" : ObjectId("5cfbddc2517f0b0332b6a8a1"), "name" : "user2", "age" : "age2", "num" : 2 }
{ "_id" : ObjectId("5cfd2bbbdc4a8ca381ed2710"), "name" : "user2", "age" : "age22", "num" : 22 }
{ "_id" : ObjectId("5cfd30d2dc4a8ca381ed2715"), "name" : "User2", "age" : "age11", "num" : 12 }
#查询取唯一值去掉重复值 distinct
> db.c1.distinct("name")
[
"user1",
"user2",
"user3",
"user4",
"user5",
"user6",
"user7",
"user8",
"user9",
"user10",
"User2"
]
> db.c1.distinct("num")
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 12 ]
#查询多个数组里面的值
#方法一:
> db.c1.find({"post.titl":1})
{ "_id" : ObjectId("5cfdea1c2e9a2c8b9bb2f9dd"), "name" : "user1", "post" : [ { "titl" : 1 }, { "age" : 2 }, { "num" : 3 } ] }
方法二:
> db.c1.find({post:{$elemMatch:{titl:1}}})
{ "_id" : ObjectId("5cfdea1c2e9a2c8b9bb2f9dd"), "name" : "user1", "post" : [ { "titl" : 1 }, { "age" : 2 }, { "num" : 3 } ] }
#遍历游标,判断是否有数据,一条一条取出
> var x=db.c1.find()
> x.hasNext()
true
> x.next()
{
"_id" : ObjectId("5cfdea1c2e9a2c8b9bb2f9dd"),
"name" : "user1",
"post" : [
{
"titl" : 1
},
{
"age" : 2
},
{
"num" : 3
}
]
}
>
#查询null的值
方法一:
> db.c2.find({age:{$type:10}});
{ "_id" : ObjectId("5cfe16752e9a2c8b9bb2f9e1"), "name" : "user1", "age" : null }
{ "_id" : ObjectId("5cfe167a2e9a2c8b9bb2f9e2"), "name" : "user2", "age" : null }
方法二:
> db.c2.find({age:{$exists:1,$in:[null]}})
{ "_id" : ObjectId("5cfe16752e9a2c8b9bb2f9e1"), "name" : "user1", "age" : null }
{ "_id" : ObjectId("5cfe167a2e9a2c8b9bb2f9e2"), "name" : "user2", "age" : null }
# $slice 针对数组使用有效
> db.c1.find({name:"user1"},{post:{$slice:1}})#取前1
{ "_id" : ObjectId("5cfdea1c2e9a2c8b9bb2f9dd"), "name" : "user1", "post" : [ { "titl" : 1 } ] }
{ "_id" : ObjectId("5cfdea782e9a2c8b9bb2f9de"), "name" : "user1", "post" : [ { "titl" : 12 } ] }
{ "_id" : ObjectId("5cfdeb432e9a2c8b9bb2f9df"), "name" : "user1", "post" : [ { "titl" : 1 } ] }
{ "_id" : ObjectId("5cfdebd12e9a2c8b9bb2f9e0"), "name" : "user1", "post" : [ { "titl" : 11 } ] }
> db.c1.find({name:"user1"},{post:{$slice:2}})#取前2
{ "_id" : ObjectId("5cfdea1c2e9a2c8b9bb2f9dd"), "name" : "user1", "post" : [ { "titl" : 1 }, { "age" : 2 } ] }
{ "_id" : ObjectId("5cfdea782e9a2c8b9bb2f9de"), "name" : "user1", "post" : [ { "titl" : 12 }, { "age" : 22 } ] }
{ "_id" : ObjectId("5cfdeb432e9a2c8b9bb2f9df"), "name" : "user1", "post" : [ { "titl" : 1 }, { "age" : 22 } ] }
{ "_id" : ObjectId("5cfdebd12e9a2c8b9bb2f9e0"), "name" : "user1", "post" : [ { "titl" : 11 }, { "age" : 21 } ] }
> db.c1.find({name:"user1"},{post:{$slice:-2}})#取后2
{ "_id" : ObjectId("5cfdea1c2e9a2c8b9bb2f9dd"), "name" : "user1", "post" : [ { "age" : 2 }, { "num" : 3 } ] }
{ "_id" : ObjectId("5cfdea782e9a2c8b9bb2f9de"), "name" : "user1", "post" : [ { "age" : 22 }, { "num" : 23 } ] }
{ "_id" : ObjectId("5cfdeb432e9a2c8b9bb2f9df"), "name" : "user1", "post" : [ { "age" : 22 }, { "num" : 3 } ] }
{ "_id" : ObjectId("5cfdebd12e9a2c8b9bb2f9e0"), "name" : "user1", "post" : [ { "age" : 21 }, { "num" : 3 } ] }
> db.c1.find({name:"user1"},{post:{$slice:[1,2]}})#跳过第1个,从第二个开始取
{ "_id" : ObjectId("5cfdea1c2e9a2c8b9bb2f9dd"), "name" : "user1", "post" : [ { "age" : 2 }, { "num" : 3 } ] }
{ "_id" : ObjectId("5cfdea782e9a2c8b9bb2f9de"), "name" : "user1", "post" : [ { "age" : 22 }, { "num" : 23 } ] }
{ "_id" : ObjectId("5cfdeb432e9a2c8b9bb2f9df"), "name" : "user1", "post" : [ { "age" : 22 }, { "num" : 3 } ] }
{ "_id" : ObjectId("5cfdebd12e9a2c8b9bb2f9e0"), "name" : "user1", "post" : [ { "age" : 21 }, { "num" : 3 } ] }
4、修改(update)
#把name:user3的这条数据的age值修改成21
> db.c2.update({name:"user3},{"$.age":"21"})
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
criteria:用于设置查询条件的对象
objnew:用于设置更新内容的对象
upsert:如果记录已经存在,更新它否则新增一个记录(0或1)
multi:如果有多个符合条件的记录,全部更新(0或1)
注意:默认情况下,只会更新第一个符合条件的记录
实例操作:
> db.c2.find()
{ "_id" : ObjectId("5cfe16752e9a2c8b9bb2f9e1"), "name" : "user1", "age" : null }
{ "_id" : ObjectId("5cfe167a2e9a2c8b9bb2f9e2"), "name" : "user2", "age" : null }
{ "_id" : ObjectId("5cfe16832e9a2c8b9bb2f9e3"), "name" : "user3", "age" : 22 }
{ "_id" : ObjectId("5cfe16892e9a2c8b9bb2f9e4"), "name" : "user4", "age" : 22 }
{ "_id" : ObjectId("5cfe168f2e9a2c8b9bb2f9e5"), "name" : "user5", "age" : 25 }
#对象不存在新增一个,存在则修改
> db.c2.update({name:"user66"},{name:"user6"},1)
> db.c2.find()
{ "_id" : ObjectId("5cfe16752e9a2c8b9bb2f9e1"), "name" : "user1", "age" : null }
{ "_id" : ObjectId("5cfe167a2e9a2c8b9bb2f9e2"), "name" : "user2", "age" : null }
{ "_id" : ObjectId("5cfe16832e9a2c8b9bb2f9e3"), "name" : "user3", "age" : 22 }
{ "_id" : ObjectId("5cfe16892e9a2c8b9bb2f9e4"), "name" : "user4", "age" : 22 }
{ "_id" : ObjectId("5cfe168f2e9a2c8b9bb2f9e5"), "name" : "user5", "age" : 25 }
{ "_id" : ObjectId("5cff2ddc5ba0016277aac7f4"), "name" : "user66" }

#对象不存在修改失败,存在则修改
> db.c2.update({name:"user6"},{name:"user66"},0)
> db.c2.find()
{ "_id" : ObjectId("5cfe16752e9a2c8b9bb2f9e1"), "name" : "user1", "age" : null }
{ "_id" : ObjectId("5cfe167a2e9a2c8b9bb2f9e2"), "name" : "user2", "age" : null }
{ "_id" : ObjectId("5cfe16832e9a2c8b9bb2f9e3"), "name" : "user3", "age" : 22 }
{ "_id" : ObjectId("5cfe16892e9a2c8b9bb2f9e4"), "name" : "user4", "age" : 22 }
{ "_id" : ObjectId("5cfe168f2e9a2c8b9bb2f9e5"), "name" : "user5", "age" : 25 }
{ "_id" : ObjectId("5cff2ddc5ba0016277aac7f4"), "name" : "user66" }

#更新所有配置出的对象,
# $set 魔术变量,第四个参数必需存在才能使用
> db.c2.update({name:"user6"},{$set:{name:"user66"}},0,1)
> db.c2.find()
{ "_id" : ObjectId("5cfe16752e9a2c8b9bb2f9e1"), "name" : "user1", "age" : null }
{ "_id" : ObjectId("5cfe167a2e9a2c8b9bb2f9e2"), "name" : "user2", "age" : null }
{ "_id" : ObjectId("5cfe16832e9a2c8b9bb2f9e3"), "name" : "user3", "age" : 22 }
{ "_id" : ObjectId("5cfe16892e9a2c8b9bb2f9e4"), "name" : "user4", "age" : 22 }
{ "_id" : ObjectId("5cfe168f2e9a2c8b9bb2f9e5"), "name" : "user5", "age" : 25 }
{ "_id" : ObjectId("5cff2ddc5ba0016277aac7f4"), "name" : "user66" }

# $set 更新的对象存在则更新,不存在则新一个对象
> db.c2.update({name:"user66"},{$set:{age:6}},0,1)
> db.c2.find()
{ "_id" : ObjectId("5cfe16752e9a2c8b9bb2f9e1"), "name" : "user1", "age" : null }
{ "_id" : ObjectId("5cfe167a2e9a2c8b9bb2f9e2"), "name" : "user2", "age" : null }
{ "_id" : ObjectId("5cfe16832e9a2c8b9bb2f9e3"), "name" : "user3", "age" : 22 }
{ "_id" : ObjectId("5cfe16892e9a2c8b9bb2f9e4"), "name" : "user4", "age" : 22 }
{ "_id" : ObjectId("5cfe168f2e9a2c8b9bb2f9e5"), "name" : "user5", "age" : 25 }
{ "_id" : ObjectId("5cff2ddc5ba0016277aac7f4"), "name" : "user66", "age" : 6 }
{ "_id" : ObjectId("5cff2ea41434a33e16420347"), "name" : "user66", "age" : 6 }
# $inc 如果字段不存在则创建并赋值,已存在则数值累加
> db.c3.find()
{ "_id" : ObjectId("5cffe2871434a33e1642034a"), "name" : "user1", "score" : 1 }
{ "_id" : ObjectId("5cffe2911434a33e1642034b"), "name" : "user2", "score" : 5 }
{ "_id" : ObjectId("5cffe2981434a33e1642034c"), "name" : "user3" }
#第一个 {} 为空表示对所有数据进行操作
> db.c3.update({},{#inc:{score:10}},0,1)
> db.c3.find()
{ "_id" : ObjectId("5cffe2871434a33e1642034a"), "name" : "user1", "score" : 11 }
{ "_id" : ObjectId("5cffe2911434a33e1642034b"), "name" : "user2", "score" : 15 }
{ "_id" : ObjectId("5cffe2981434a33e1642034c"), "name" : "user3", "score" : 10 }
# 减3
> db.c3.update({name:"user2"},{$inc:{score:-3}},0,1)
> db.c3.find()
{ "_id" : ObjectId("5cffe2871434a33e1642034a"), "name" : "user1", "score" : 11 }
{ "_id" : ObjectId("5cffe2911434a33e1642034b"), "name" : "user2", "score" : 12 }
{ "_id" : ObjectId("5cffe2981434a33e1642034c"), "name" : "user3", "score" : 10 }
# $unset 删除字段
> db.c3.update({},{$unset:{score:1}},0,1)
> db.c3.find()
{ "_id" : ObjectId("5cffe2871434a33e1642034a"), "name" : "user1" }
{ "_id" : ObjectId("5cffe2911434a33e1642034b"), "name" : "user2" }
{ "_id" : ObjectId("5cffe2981434a33e1642034c"), "name" : "user3" }
# $push 往一个已经存在的数组追加值
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3 ] }
# 往数组追加一个值
> db.c4.update({name:"user1"},{$push:{arr:4}},0,1)
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3, 4 ] }
# $pop 从数组中弹出一个值,默认从最后一个,-1从第一个
# 从第一个弹出
> db.c4.update({name:"user1"},{$pop:{arr:-1}},0,1)
# 从最后一个弹出
> db.c4.update({name:"user1"},{$pop:{arr:1}},0,1)
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3 ] }
# $pushAll 往数组里添加多个值
> db.c4.update({name:"user1"},{$pushAll:{arr:[4,5,6,4,5,6]}},0,1)
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3, 4, 5, 6, 4, 5, 6 ] }
# $addToSet 往数组里添加数值,存在则添加失败,不存在则添加成功
> db.c4.update({name:"user1"},{$addToSet:{arr:3}},0,1)
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3, 4, 5, 6, 4, 5, 6 ] }
#添加多个值并且不重复 配合 $each 使用
> db.c4.update({name:"user1"},{$addToSet:{arr:{$each:[5,6,7]}}},0,1)
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3, 4, 5, 6, 4, 5, 6, 7 ] }
# $pull 删除一个指定值
> db.c4.update({name:"user1"},{$pull:{arr:4}})
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3, 5, 6, 5, 6, 7 ] }
# $pulAll 删除多个指定值
> db.c4.update({name:"user1"},{$pullAll:{arr:[5,6]}})
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "arr" : [ 1, 2, 3, 7 ] }
# $rename 修改字段的名字
> db.c4.update({name:"user1"},{$rename:{"arr":"post"}})
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "post" : [ 1, 2, 3, 7 ] }
# $ 符的使用,可以修改某段的值
> db.c4.update({"post.title":"linux"},{$set:{"post.$.cnt":"php lamp"}})
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "post" : [ 1, 2, 3, 7, { "title" : "linux", "cnt" : "php lamp" } ], "title" : [ "linux" ], "arr" : [ { "title" : "linux" } ] }
> db.c4.update({"post.title":"linux"},{$set:{"post.$.title":"php+mysql+ lamp"}})
> db.c4.find()
{ "_id" : ObjectId("5cffe61f1434a33e1642034d"), "name" : "user1", "post" : [ 1, 2, 3, 7, { "title" : "php+mysql+ lamp", "cnt" : "php lamp" } ], "title" : [ "linux" ], "arr" : [ { "title" : "linux" } ] }
#设置固定集合
#把普通集合转成固定集合,c1集合,设置大小10M,集合个数3个
db.runCommand({convertToCapped:"c1",size:10000000,max:3});
#查看集合状态
> db.c2.stats()

#检测解析影响行数
db.c2.find({name:"user5"}).explain({});
#以下参数说明
COLLSCAN

nReturned
返回数据个数
docsExamined
扫描数据行数

#设置索引(把 name 字段设置成索引)
> db.c2.ensureIndex({name:1})

#设置唯一索引
> db.c2.ensureIndex({age:1},{unique:1})

#查看索引个数
> db.c2.getIndexKeys()
[ { "_id" : 1 }, { "name" : 1 }, { "age" : 1 } ]

#查看索引
> db.c2.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.c2"
},
{
"v" : 1,
"key" : {
"name" : 1
},
"name" : "name_1",
"ns" : "test.c2"
},
{
"v" : 1,
"unique" : true,
"key" : {
"age" : 1
},
"name" : "age_1",
"ns" : "test.c2"
}
]
#删除指定索引
> db.c2.dropIndex({age:1})
#删除所有索引
> db.c2.dropIndexes()
#数据导入导出
#导出数据 test 数据库 c2 集合  c2.out 导出的文件
mongoexport -d test -c c2 -o /tmp/c2.out
#导入数据
mongoimport -d test -c c2 /tmp/c2.out
#备份数据
mongodump -d test -o /tmp/mog/
#恢复备份数据
mongorestore -d test /tmp/mog/test/

#用户授权

#创建超级管理员用户(注:只能在admin库创建)
db.createUser(
{
user: "admin",
pwd: "123",
roles: [ { role: "root", db: "admin" } ]
}
)
#创建普通表管理员用户
db.createUser({user:"test",pwd:"123",roles:[{role:"dbAdmin",db:"test"}]})
#授权登录
mongo -uroot -p123 localhost:27017/admin
#授权使用
>db.auth("root","123")

创建用户

安装完之后,打开命令行,进入mongodb安装目录,在bin目录下执行 mongod 启动, 该模式是不需要安全认证的模式,

启动后,使用可视化工具如:Robo 3T  打开shell窗口

先创建一个有grant权限的用户,如root权限的用户:

use admin
db.createUser(

{

user: "admin",

pwd: "admin",

roles: [ { role: "root", db: "admin" } ]

}

)
user:用户名

pwd:密码

db:指定该用户的数据库,admin是用于权限控制的数据库,如果没有需要新建一个

roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:

Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system

具体角色的功能:

Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限


主从复制 副本集
Master-Slave 复制(主从)
Replica Sets 复制(副本集)



喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 775人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表