MongoDB数据库、集合与文档的基本操作

目录

一、准备

二、MongoDB 创建数据库

三、MongoDB 删除数据库

四、集合操作

五、插入文档

六、更新文档(区分update和save的区别)

七、删除文档(注意区分remove和delete)

八、查询操作


一、准备

1、进入mongodb shell

执行mongo或mongosh命令进入mongodb shell(注意这里mongod的服务已经启动)

```
mongo/mongosh
```

mongod服务不知道如何启动的看这篇https://blog.csdn.net/livefinehhh/article/details/121380534https://blog.csdn.net/livefinehhh/article/details/121380534

二、MongoDB 创建数据库

MongoDB 创建数据库的语法格式如下:

use "DATABASE_NAME"

如果数据库不存在,则创建数据库,否则切换到指定数据库。

例如:以下示例创建了数据库 Employee:

```
use Employee
```

如果想查看所有数据库,可以使用命令:

```
show dbs
```

 MongoDB数据库、集合与文档的基本操作_第1张图片

可以看到,刚创建的数据库 Employee 并不在数据库的列表中, 要显示它,需要向 Employee 数据库插入一些数据。

```
db.Employee.insert({"name":"google"})
show dbs
```

MongoDB数据库、集合与文档的基本操作_第2张图片

MongoDB 中默认的数据库为 test,如果没有创建新的数据库,集合将存放在 test 数据库中。

三、MongoDB 删除数据库

MongoDB 删除数据库的语法格式如下:

db.dropDatabase()

删除当前数据库,默认为 test,可以使用 db 命令查看当前数据库名。

```
db
```

首先,使用show dbs查看所有数据库,然后用use切换到数据库Employee,再进行删除操作,最后使用show查看数据库是否删除成功,操作步骤如图所示:

(如果当前使用的数据库,就是你想要删除的数据库,直接db.dropDatabase(),不用这么麻烦)

```
show dbs

use Employee

db.dropDatabase()

show dbs
```

MongoDB数据库、集合与文档的基本操作_第3张图片

四、集合操作

命令格式:

db.createCollection(name, options)

例如在myDB数据库下创建myCollection集合

执行以下命令:

```
use myDB

db.createCollection("myCollection")
```

查询数据库中所有的集合使用:

```
show collections
```

MongoDB数据库、集合与文档的基本操作_第4张图片

对集合重命名使用renameCollection方法,如下图所示:

```
db.myCollection.renameCollection("myColl")
```

删除集合使用drop方法,如下图所示:

```
db.myColl.drop()
```

查看集合是否删除成功:

```
show collections
```

MongoDB数据库、集合与文档的基本操作_第5张图片

五、插入文档

MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:

db.COLLECTION_NAME.insert(document)

示例:向数据库student的stuinfo集合插入以下数据

1.使用数据库student

```
use student
```

2.insert方法插入单个文档 

```
db.stuinfo.insert({_id:001,name:'alice',age:18})
```

3.save方法插入单个文档

```
db.stuinfo.save({_id:002,name:'nancy',age:19})
```

4.插入多个文档

```
db.stuinfo.insert([{_id:003,name:'tom',age:18},{_id:004,name:'harry',age:19}])
```

文档插入完成后,使用find()查看集合数据,具体操作步骤如下图所示:

MongoDB数据库、集合与文档的基本操作_第6张图片

以上示例中stuinfo是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

还可以可以先将文档定义为一个变量,再进行插入:

```
s={_id:5,name:'simon',age:28}
db.stuinfo.insert(s)
```

操作结果如下图所示:

插入多条nancy的记录:

```
db.stuinfo.insert([{_id:006,name:'nancy',age:17},{_id:007,name:'nancy',age:21}])
```

MongoDB数据库、集合与文档的基本操作_第7张图片

六、更新文档(区分update和save的区别)

MongoDB 使用 update() 和 save() 方法来更新集合中的文档。

(1)update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update(,upsert,multi,writeConcern)

参数说明:

query : update的查询条件,类似sql update查询内where后面的。

objNew: update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

示例

通过 update() 方法来更新上述文档的姓名(name): 将姓名(name)为harry的文档 更新为了 "李四"。

执行命令:

```
db.stuinfo.update({name:'harry'},{$set:{name:'李四'}})
```

通过find()查看修改是否成功,具体操作步骤如下所示:

MongoDB数据库、集合与文档的基本操作_第8张图片

以上语句只会修改第一条发现的文档,如果要修改多条相同的文档,则需要设置 multi 参数为 true。

如将name为“nancy”所有文档更新为“王五”

```
db.stuinfo.update({name:'nancy'},{$set:{name:'王五'}},false,true)
```

操作结果如下图所示:

MongoDB数据库、集合与文档的基本操作_第9张图片

(2)save() 方法通过传入的文档来替换已有文档。语法格式如下:

db.collection.save(,{writeConcern:})

参数说明:

document: 文档数据。

writeConcern :可选,抛出异常的级别。

示例

替换 _id 为2的文档的数据:

```
db.stuinfo.save({_id:2,name:'curry',age:20})
```

操作步骤如下图所示: 

MongoDB数据库、集合与文档的基本操作_第10张图片

更多示例(不做多的展示,感兴趣的可以实操一下)

生成多条记录:

```
for(var i=1;i<10;i++)  db.col.insert({count:i,test2:false,test5:true})
```

更新按条件查出来的第一条记录:

```
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
```

更新按条件查出来的全部条记录:

```
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
```

不存在update的记录,会添加一条:

```
db.col.update( { "count" : { $gt : 14 } } , { $set : { "test5" : "OK"} },true,false );
```

更新按条件查出来的全部条记录:

```
db.col.update( { "count" : { $gt : 1 } } , { $inc : { "count" : 1} },false,true );
```

更新按条件查出来的第一条记录:

```
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
```

七、删除文档(注意区分remove和delete)

remove(),deleteOne() 和 deleteMany() 方法可以用来移除集合中的数据。

(1)删除集合stuinfo下全部文档

```
db.stuinfo.deleteMany({})
```

```
db.stuinfo.remove({})
```

具体如下图所示

MongoDB数据库、集合与文档的基本操作_第11张图片

(2)删除指定条件的文档

删除集合stuinfo中name等于王五的全部文档:

```
db.stuinfo.deleteMany({name:'nancy'})
```

删除 age等于 18 的一个文档:

```
db.stuinfo.deleteOne({age:18})
```

步骤如图:

MongoDB数据库、集合与文档的基本操作_第12张图片

八、查询操作

1、find

MongoDB中查询文档使用find()方法。find()方法以非结构化的方式来显示所要查询的文档,查询文档的语法格式如下:

db.collection.find(query,projection)

query为可选项,设置查询操作符指定查询条件。

projection也为可选项,表示使用投影操作符指定返回的字段,如果忽略此选项则返回所有字段。

db.collection.find().pretty()         

pretty() 方法以格式化的方式来显示所有文档

空的查询文档{}会匹配集合的全部内容。若是不指定查询文档,默认就是{}。

示例

db.user.find({})                                              即查询user集合中的全部内容

db.user.find({“age”:18})                           查找所有的“age”的值为18的文档

db.user.find({“name”:“jack”})                    想匹配一个字符串,“name”的值为“jack”的用户

db.user.find({“name”:“jack”,“age”:18})查询所有用户名为“jack”且年龄为18的用户

2、查询条件

2.1比较操作符

 $lt:小于(<)     $lte :小于等于(<=)    

$gt :大于(>)     $gte :大于等于(>=)    

$ne :不等于(≠)

示例

查询user集合中:年龄在18到28的用户:

db.user.find({“age”:{“$gte”:18,“$lte”:28}})

2.2查询条件——包含($in)或不包含($nin)

示例

查询国籍是中国或者美国的学生信息 。

db.persons.find({country:{$in:[“USA”,“China”]}})

查询国籍不是中国或美国的学生信息。

db.persons.find({country:{$nin:[“USA”,“China”]}})

2.3查询条件——”$or”查询与“$not”查询

示例

$or 查询 查询语文成绩大于90或者英语成绩大于85的学生信息。

db.personsr.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]})

$not 查询 查询出名字中不存在“foo”的学生的信息。

db.persons.find({name:{$not:/foo/}})

2.4特定类型查询

2.4.1 null

查询某个文档为null字段,如下:

db.test.find({age:null})

此语句不仅会匹配出age为null的文档,其他不同类型的文档也会被查出。

因为null不仅会匹配某个键值为null的文档,而且会匹配不包含这个键的文档。

2.4.2 limit()

limit()函数与SQL中作用相同,用于限制查询结果返回的个数。

只返回3个匹配的结果,如下:

db.test.find().limit(3)

2.4.3 skip()

skip()函数用于略过指定个数的文档。

略过第一个文档,返回后面的文档,如下:

db.test.find().skip(1)

2.4.4 sort()

sort()函数用于对查询结果进行排序,1是升序,-1是降序。

查询结果升序显示,如下:

db.test.find().sort({"price":1})


MongoDB数据库、集合与文档的基本操作介绍内容就到了这里了~

还有需要的知识没有讲,以后有机会再进行补充~

你可能感兴趣的:(MongoDB,mongodb,linux,ubuntu)