Centos mongodb 安装
http://www.runoob.com/mongodb/mongodb-analyzing-queries.html
cd /usr/local/software
下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.12.tgz
或者
curl -L -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.12.tgz
tar -xvf mongodb-linux-x86_64-3.6.12.tgz
cd mongodb-linux-x86_64-3.6.12
touch mongodb.log
mkdir data
touch mongo.conf
## 服务端口
port=27017
## 数据文件目录
dbpath=/usr/local/software/mongodb-linux-x86_64-3.6.12/data
## 日志文件目录
logpath=/usr/local/software/mongodb-linux-x86_64-3.6.12/mongodb.log
## 是否后台启动
fork=true
## 追加方式写日志
logappend=true
## 是否鉴权 首次启动改为false 创建用户后改为true
auth=false
## 是否允许远程访问
bind_ip=0.0.0.0
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
启动 mongo
./bin/mongod --config mongo.conf
链接mongodb
./bin/mongo -utest -ptest
创建用户
db.createUser({user:"test",pwd:"test",roles:[{role:"root",db:"admin"}]});
use destiny
db.createUser({user:"destiny",pwd:"123456",roles:[{role:"readWrite",db:"destiny"}]});
删除用户
b.system.users.remove({user:"destiny"});
删除所有用户
db.system.users.remove({})
查询所有用户
db.system.users.find().pretty();
关闭服务
db.shutdownServer();
切换数据库
use admin;
查看数据库版本
db.version();
获取数据库名称
db.getName();
删除数据库
use testdb
db.dropDatabase()
删除数据库
use testdb
删除集合
db.collectionname.drop()
创建集合
db.createCollection("runoob")
capped 创建固定集合
autoIndexId 自动在_id 创建索引
size 集合的最大值 字节 capped为true时指定
max 文档的最大数量
先检查size 在检查max
db.createCollection("runoob", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
查看所有集合
show collections
新增或者查找
db.col.insert();
db.col.find()
更新文档语法
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
更新
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
只更新第一条记录:
db.col.update( { "count" : { set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { set : { "test2" : "OK"} },false,true );
只添加第一条:
db.col.update( { "count" : { set : { "test5" : "OK"} },true,false );
全部添加进去:
db.col.update( { "count" : { set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { inc : { "count" : 1} },false,true );
只更新第一条记录:
db.col.update( { "count" : { inc : { "count" : 1} },false,false );
删除文档
db.col.remove({});
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 |
{<key>:<value> } |
db.col.find({"by":"菜鸟教程"}).pretty() |
where by = '菜鸟教程' |
小于 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小于或等于 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大于 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大于或等于 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
and 条件
db.col.find({key1:value1, key2:value2}).pretty()
or 条件
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
and or 条件连用
db.col.find({"likes": {or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
limit和skip实现分页
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
sort 1 代表升序 -1 代表降序
b.COLLECTION_NAME.find().sort({KEY:1})
1、查看集合索引
db.col.getIndexes()
2、查看集合索引大小
db.col.totalIndexSize()
3、删除集合所有索引
db.col.dropIndexes()
4、删除集合指定索引
db.col.dropIndex("索引名称")
创建索引 1 升序 -1 降序
db.collection.createIndex(keys, options)
background 建索引过程会阻塞其它数据库操作
unique 是否唯一 默认false
name 索引名称
db.values.createIndex({open: 1, close: 1}, {background: true})
网友评论