mongodb常用配置和操作

8/18/2022

# 配置

# 1.目录结构

mongodb
│  ├─bin
│  │  └─mongodb的安装文件
│  ├─conf
│  │  └─mongod.conf
│  ├─data
│  │  └─db
│  ├─logs
│  │  └─mongod.log
│  └─...
1
2
3
4
5
6
7
8
9
10

# 2.配置文件:mongod.conf

systemLog:
    destination: file
    path: D:\MongoDB\Server\5.0\log\mongod.log
storage:
    dbPath: D:\MongoDB\Server\5.0\data\db
net:
    port: 27017
security:
    authorization: enabled
1
2
3
4
5
6
7
8
9

# 操作

# 1、安装服务

mongod.exe --config "D:\MongoDB\Server\5.0\log\mongod.log" --install
1

# 2、启动服务

net start MongoDB
1

# 3、停止服务

net stop MongoDB
1

# 4、移除服务

mongod.exe --remove
1

# 5、进入 mongodb 后台

mongo
1

# 6、查看所有库

show dbs
1

# 7、查看当前库

db
1

# 8、添加 root 账号

use admin
db.createUser(
    {
      user: "root",
      pwd: "mongo",
      roles: [{role:"root", db:"admin"}]
    }
 )
1
2
3
4
5
6
7
8

# 9、创建数据库

use blog #不存在则自动创建
1

# 10、删除数据库

db.dropDatabase()
1

# 11、添加用户账号

use blog
db.createUser(
    {
      user: "test",
      pwd: "mongo",
      roles: [{role:"dbOwner", db:"blog"}]
    }
 )
1
2
3
4
5
6
7
8

# 12、查看集合

use blog
show collections
1
2

# 13、创建集合

use blog

db.createCollection("article")
1
2
3

# 14、删除集合

use blog
db.article.drop()
1
2

# 15、插入文档

use blog
db.article.insert({
    id: 1,
    title: "文章标题",
    author: "文章作者"
})
1
2
3
4
5
6

#其它插入方法

db.article.insert([{
    id: 2,
    title: "文章标题1",
    author: "文章作者"
},{
    id: 3,
    title: "文章标题2",
    author: "文章作者"
}],{
    writeConcern: 1,
    ordered: true
})
1
2
3
4
5
6
7
8
9
10
11
12
db.article.insertOne({
    id: 4,
    'title': "文章标题",
    author: "文章作者"
},{
    writeConcern: 1
})
1
2
3
4
5
6
7
db.article.insertMany([{
    id: 5,
    'title': "文章标题1",
    author: "文章作者"
},{
    id: 6,
    'title': "文章标题2",
    author: "文章作者"
}],{
    writeConcern: 1,
    ordered: true
})
1
2
3
4
5
6
7
8
9
10
11
12

# 16、查询文档

use blog
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 表示降序
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 17、更新文档

use blog
db.article.update({query},{"title":"article title"}) #更新整个文档
db.article.update({query},{$set:{"article title"}}) #仅更新 title
db.article.save({"\_id" : ObjectId("61d82cc9245a5025d7e59151"),"title":"测试标题"}) #\_id 存在则更新,不存在则创建
1
2
3
4

# 18、删除文档

use blog
db.article.remove({query}) #按查询条件删除
db.article.remove() #删除所有
1
2
3

#其它删除方法

db.article.deleteOne({query}) #删除单个文档
db.article.deleteMany({query}) #删除多个文档
db.article.deleteMany({}) #删除所有文档
1
2
3

# 19、查看索引

use blog
db.article.getIndexes() #全部索引
db.article.totalIndexSize() #索引大小
1
2
3

# 20、创建索引

  • 集合中索引不能超过 64 个
  • 索引名的长度不能超过 128 个字符
  • 一个复合索引最多可以有 31 个字段
use blog
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 为集合生存时间,当字段为日期类型时可规定数据创建后多久后自动清除
1
2
3
4

# 21、删除索引

use blog
db.article.dropIndex("title_1") #删除单个索引,title_1 为索引名称
db.article.dropIndexes() #删除全部索引
1
2
3

# 22、聚合

use blog
db.article.aggregate({$project:{文档结构,_id:0为排除_id字段},$match:{过滤数据},$unwind:{拆分字段},$group:{数据分组}})
1
2

# 23、创建副本,将数据同步在多个服务器

mongod --port 27017 --dbpath "E:\other\mongodb\data" --replSet rs0
rs.add("mongod1.net:27017") #添加副本
1
2
上次更新: 2024/09/10 17:37:12
最近更新
01
跨域的几种常见解决方案
04-03
02
react教程
03-01
03
前端抓包神器whistle
09-01