环境搭建

参考链接 https://www.cnblogs.com/sowler/p/17513973.html

https://www.mongodb.com/zh-cn/docs/manual/tutorial/getting-started/?msockid=1d1e415e713463862dba5762701d623f

1
mkdir -p /data/mongo/{conf,data}
1
2
3
4
5
6
7
8
9
docker run -d --name mongodb \
-p 27017:27017 \
-v /data/mongo/data:/data/db \
-v /data/mongo/conf:/data/configdb \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=root \
mongo:8.2.2 \
--bind_ip 0.0.0.0 \
--auth

Navicat连接时,编辑URI关闭TLS

1
mongodb://root@kali:27017/?ssl=false&authSource=admin

MongoDB Shell连接命令

1
mongosh.exe mongodb://root@kali:27017/?authSource=admin

常见命令

数据库

1
2
3
4
5
6
show dbs
show databases
// 数据库不存在自动创建
use test
db
db.dropDatabase()

集合

1
2
3
4
5
6
show collections
show tables
db.createCollection("my-collection1")
db["my-collection1"].drop()
db.createCollection("mycollection1")
db.mycollection1.drop()

文档

新增集合中的文档

插入一条

1
2
3
4
5
6
7
8
9
10
11
db.sec1.insertOne(
{
"articleid": "100000",
"content": "今天天气真好,阳光明媚",
"userid": "1001",
"nickname": "Rose",
"createdatetime": new Date(),
"likenum": NumberInt(10),
"state": null
}
)

插入多条

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
db.sec1.insertMany([
{
"_id": "1",
"articleid": "100001",
"content": "我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我他。",
"userid": "1002",
"nickname": "相忘于江湖",
"createdatetime": new Date("2019-08-05T22:08:15.522Z"),
"likenum": NumberInt(1000),
"state": "1"
},
{
"_id": "2",
"articleid": "100001",
"content": "我夏天空腹喝凉开水,冬天喝温开水",
"userid": "1005",
"nickname": "伊人憔悴",
"createdatetime": new Date("2019-08-05T23:58:51.485Z"),
"likenum": NumberInt(888),
"state": "1"
},
{
"_id": "3",
"articleid": "100001",
"content": "我一直喝凉开水,冬天夏天都喝。",
"userid": "1004",
"nickname": "杰克船长",
"createdatetime": new Date("2019-08-06T01:05:06.321Z"),
"likenum": NumberInt(666),
"state": "1"
},
{
"_id": "4",
"articleid": "100001",
"content": "专家说不能空腹吃饭,影响健康。",
"userid": "1003",
"nickname": "凯撒",
"createdatetime": new Date("2019-08-06T08:18:35.288Z"),
"likenum": NumberInt(2000),
"state": "1"
},
{
"_id": "5",
"articleid": "100001",
"content": "研究表明,刚烧开的水千万不能喝,因为烫嘴。",
"userid": "1003",
"nickname": "凯撒",
"createdatetime": new Date("2019-08-06T11:01:02.521Z"),
"likenum": NumberInt(3000),
"state": "1"
}
])

try-catch 捕捉插入异常

1
2
3
4
5
6
7
8
9
10
11
12
13
try {

db.comment.insertMany([
{"_id":"1","articleid":"100001","content":"我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我他。","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date("2019-08-05T22:08:15.522Z"),"likenum":NumberInt(1000),"state":"1"},
{"_id":"2","articleid":"100001","content":"我夏天空腹喝凉开水,冬天喝温开水","userid":"1005","nickname":"伊人憔悴","createdatetime":new Date("2019-08-05T23:58:51.485Z"),"likenum":NumberInt(888),"state":"1"},
{"_id":"3","articleid":"100001","content":"我一直喝凉开水,冬天夏天都喝。","userid":"1004","nickname":"杰克船长","createdatetime":new Date("2019-08-06T01:05:06.321Z"),"likenum":NumberInt(666),"state":"1"},
{"_id":"4","articleid":"100001","content":"专家说不能空腹吃饭,影响健康。","userid":"1003","nickname":"凯撒","createdatetime":new Date("2019-08-06T08:18:35.288Z"),"likenum":NumberInt(2000),"state":"1"},
{"_id":"5","articleid":"100001","content":"研究表明,刚烧开的水千万不能喝,因为烫嘴。","userid":"1003","nickname":"凯撒","createdatetime":new Date("2019-08-06T11:01:02.521Z"),"likenum":NumberInt(3000),"state":"1"}
]);

} catch (e) {
print (e);
}

查询集合中的文档

1
2
3
4
5
6
7
8
9
10
11
db.sec1.find()
db.sec1.find({})
db.sec1.find({userid:'1003'})
// 第一条数据
db.sec1.findOne({userid:'1003'})
// 投影查询 只显示userid、nickname
db.sec1.find({userid:"1003"},{userid:1,nickname:1})
// 不显示_id
db.sec1.find({userid:"1003"},{userid:1,nickname:1,_id:0})
// 查询所有,只显示_id、userid、nickname
db.sec1.find({},{userid:1,nickname:1})

更新集合中的文档

MongoDB 8.2.2:MongoInvalidArgumentError: Update document requires atomic operators
update必须使用原子操作符修饰(如$set)

1
2
3
4
5
6
7
8
9
10
// 覆盖修改
db.sec1.replaceOne({_id:"1"},{likenum:NumberInt(1001)})
// 局部修改
db.sec1.update({_id:"2"},{$set:{likenum:NumberInt(889)}})
//默认只修改第一条数据
db.sec1.update({userid:"1003"},{$set:{nickname:"凯撒2"}})
//修改所有符合条件的数据
db.sec1.update({userid:"1003"},{$set:{nickname:"凯撒大帝"}},{multi:true})
// 增加某列的值
db.sec1.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})

删除集合中的文档

1
2
3
4
// 无条件全部删除
db.sec1.remove({})
// 删除_id=1的记录
db.sec1.remove({_id:"1"})

DeprecationWarning: Collection.remove() is deprecated. Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.

其他命令

1
2
3
4
5
6
7
8
9
// 记录所有查询
db.setProfilingLevel(2)
db.getProfilingStatus()

// 查询执行的语句
db.system.profile.find().pretty();
// 清空
db.setProfilingLevel(0)
db.system.profile.drop()

参考链接

https://www.cnblogs.com/hnkjdx-ssf/p/14903852.html