一、配置
1、目录结构
mongodb
│ ├─bin
│ │ └─mongodb的安装文件
│ ├─conf
│ │ └─mongod.conf
│ ├─data
│ │ └─db
│ ├─logs
│ │ └─mongod.log
│ └─...
2、配置文件:mongod.conf
systemLog:
destination: file
path: E:\server\mongodb\logs\mongod.log
storage:
dbPath: E:\server\mongodb\data\db
net:
port: 27017
security:
authorization: enabled
二、操作
1、安装服务
mongod.exe --config "E:\server\mongodb\conf\mongod.conf" --install
2、启动服务
net start MongoDB
3、停止服务
net stop MongoDB
4、移除服务
mongod.exe --remove
5、进入mongodb后台
mongo
6、查看所有库
show dbs
7、查看当前库
db
8、添加root账号
use admin
db.createUser(
{
user: "root",
pwd: "xxx",
roles: [{role:"root", db:"admin"}]
}
)
9、创建数据库
use blog #不存在则自动创建
10、删除数据库
db.dropDatabase()
11、添加用户账号
use blog
db.createUser(
{
user: "test",
pwd: "xxx",
roles: [{role:"dbOwner", db:"blog"}]
}
)
12、查看集合
use blog
db.auth("test","xxx");
show collections
13、创建集合
use blog
db.auth("test","xxx")
db.createCollection("article")
14、删除集合
use blog
db.auth("test","xxx")
db.article.drop()
15、插入文档
use blog
db.auth("test","xxx")
db.article.insert({
id: 1,
title: "文章标题",
author: "文章作者"
})
#其它插入方法
db.article.insert([{
id: 2,
title: "文章标题1",
author: "文章作者"
},{
id: 3,
title: "文章标题2",
author: "文章作者"
}],{
writeConcern: 1,
ordered: true
})
db.article.insertOne({
id: 4,
'title': "文章标题",
author: "文章作者"
},{
writeConcern: 1
})
db.article.insertMany([{
id: 5,
'title': "文章标题1",
author: "文章作者"
},{
id: 6,
'title': "文章标题2",
author: "文章作者"
}],{
writeConcern: 1,
ordered: true
})
16、查询文档
use blog
db.auth("test","xxx")
db.article.find().pretty() #查询所有
db.article.find({"title":"文章标题"}).pretty() #条件查询:等于
db.article.find({"id":{$lt:5}}).pretty() #条件查询:小于
db.article.find({"id":{$lte:5}}).pretty() #条件查询:小于或等于
db.article.find({"id":{$gt:5}}).pretty() #条件查询:大于
db.article.find({"id":{$gte:5}}).pretty() #条件查询:大于或等于
db.article.find({"id":{$ne:5}}).pretty() #条件查询:不等于
db.article.find({"id":{$in:[1,3,5]}}).pretty() #条件查询:包含
db.article.find({"id":{$nin:[1,3,5]}}).pretty() #条件查询:不包含
db.article.find({"id":{$type:2}}).pretty() #条件查询:数据类型,2或“string”代表字符串
db.article.find({key1:value1, key2:value2}).pretty() #多条件查询
db.article.find({"id":{$gt:3}, $or:[{key1:value1},{key2:value2}]}).pretty() #多条件查询 and+or
db.article.find().sort({"id":1}).skip(2).limit(2) #分布查询,sort->skip->limit顺序不可乱,1表示升序,-1表示降序
17、更新文档
use blog
db.auth("test","xxx")
db.article.update({query},{"title":"article title"}) #更新整个文档
db.article.update({query},{$set:{"article title"}}) #仅更新title
db.article.save({"_id" : ObjectId("61d82cc9245a5025d7e59151"),"title":"测试标题"}) #_id存在则更新,不存在则创建
18、删除文档
use blog
db.auth("test","xxx")
db.article.remove({query}) #按查询条件删除
db.article.remove() #删除所有
#其它删除方法
db.article.deleteOne({query}) #删除单个文档
db.article.deleteMany({query}) #删除多个文档
db.article.deleteMany({}) #删除所有文档
19、查看索引
use blog
db.auth("test","xxx")
db.article.getIndexes() #全部索引
db.article.totalIndexSize() #索引大小
20、创建索引
* 集合中索引不能超过64个
* 索引名的长度不能超过128个字符
* 一个复合索引最多可以有31个字段
use blog
db.auth("test","xxx")
db.article.createIndex({"title":1},{unique:true}) #单个索引,1表示升序,-1表示降序,unique为索引类型
db.article.createIndex({"title":1,"author":-1}) #多个索引
db.article.createIndex({"addtime":-1},{expireAfterSeconds:120}) #expireAfterSeconds为集合生存时间,当字段为日期类型时可规定数据创建后多久后自动清除
21、删除索引
use blog
db.auth("test","xxx")
db.article.dropIndex("title_1") #删除单个索引,title_1为索引名称
db.article.dropIndexes() #删除全部索引
22、聚合
use blog
db.auth("test","xxx")
db.article.aggregate({$project:{文档结构,_id:0为排除_id字段},$match:{过滤数据},$unwind:{拆分字段},$group:{数据分组}})
23、创建副本,将数据同步在多个服务器
mongod --port 27017 --dbpath "E:\other\mongodb\data" --replSet rs0
rs.add("mongod1.net:27017") #添加副本成员