一、MongoDB应用场景及特点

1、数据模型

一个MongoDB 实例可以包含一组数据库,一个DataBase 可以包含一组Collection(集合),一个集合可以包含一组Document(文档)。一个Document包含一组field(字段),每一个字段都是一个key/value pair。

key: 必须为字符串类型。

value:可以包含如下类型。

● 基本类型,例如,string,int,float,timestamp,binary 等类型。

● 一个document。

● 数组类型。

2、不适用的系统:

1)要求高度事务性的系统。

2)传统的商业智能应用。

3)复杂的跨文档(表)级联查询。

3、基本概念

(1)文档

文档是 MongoDB 中数据的基本单位,类似于关系数据库中的行(但是比行复杂)。多个键及其关联的值有序地放在一起就构成了文档。不同的编程语言对文档的表示方法不同,在JavaScript 中文档表示为:

{“greeting”:“hello,world”}

这个文档只有一个键“greeting”,对应的值为“hello,world”。多数情况下,文档比这个更复杂,它包含多个键/值对。例如:

{“greeting”:“hello,world”,“foo”: 3}

文档中的键/值对是有序的,下面的文档与上面的文档是完全不同的两个文档。

{“foo”: 3 ,“greeting”:“hello,world”}

文档中的值不仅可以是双引号中的字符串,也可以是其他的数据类型,例如,整型、布尔型等,也可以是另外一个文档,即文档可以嵌套。文档中的键类型只能是字符串。

(2)集合

集合就是一组文档,类似于关系数据库中的表。集合是无模式的,集合中的文档可以是各式各样的。例如,{“hello,word”:“Mike”}和{“foo”: 3},它们的键不同,值的类型也不同,但是它们可以存放在同一个集合中,也就是不同模式的文档都可以放在同一个集合中。既然集合中可以存放任何类型的文档,那么为什么还需要使用多个集合?这是因为所有文档都放在同一个集合中,无论对于开发者还是管理员,都很难对集合进行管理,而且这种情形下,对集合的查询等操作效率都不高。所以在实际使用中,往往将文档分类存放在不同的集合中,例如,对于网站的日志记录,可以根据日志的级别进行存储,Info级别日志存放在Info 集合中,Debug 级别日志存放在Debug 集合中,这样既方便了管理,也提供了查询性能。但是需要注意的是,这种对文档进行划分来分别存储并不是MongoDB 的强制要求,用户可以灵活选择。

可以使用“.”按照命名空间将集合划分为子集合。例如,对于一个博客系统,可能包括blog.user 和blog.article 两个子集合,这样划分只是让组织结构更好一些,blog 集合和blog.user、blog.article 没有任何关系。虽然子集合没有任何特殊的地方,但是使用子集合组织数据结构清晰,这也是MongoDB 推荐的方法。

(3)数据库

MongoDB 中多个文档组成集合,多个集合组成数据库。一个MongoDB 实例可以承载多个数据库。它们之间可以看作相互独立,每个数据库都有独立的权限控制。在磁盘上,不同的数据库存放在不同的文件中。MongoDB 中存在以下系统数据库。

● Admin 数据库:一个权限数据库,如果创建用户的时候将该用户添加到admin 数据库中,那么该用户就自动继承了所有数据库的权限。

● Local 数据库:这个数据库永远不会被复制,可以用来存储本地单台服务器的任意集合。

● Config 数据库:当MongoDB 使用分片模式时,config 数据库在内部使用,用于保存分片的信息。

二、MongoDB下载安装启动

1、下载地址:MongoDB Community Download | MongoDB

2、windows下安装

1)、解压zip文件

2)、在bin目录同级目录下新建data文件夹,data文件夹内新建db文件夹保存数据目录。

3)、在bin目录同级目录新建conf文件夹保存配置文件夹,在文件夹内新建mongod.conf文件配置文件。

2-1、启动MongoDB

1、第一种:cmd直接启动

E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\bin>mongod --dbpath=E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\data\db
{"t":{"$date":"2022-06-18T10:04:24.593+08:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
......
{"t":{"$date":"2022-06-18T10:04:31.190+08:00"},"s":"I",  "c":"NETWORK",  "id":23015,   "ctx":"listener","msg":"Listening on","attr":{"address":"127.0.0.1"}}
{"t":{"$date":"2022-06-18T10:04:31.190+08:00"},"s":"I",  "c":"NETWORK",  "id":23016,   "ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}
......


2、第二种:使用配置文件的方式启动
 

E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\bin>mongod -f E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\conf\mongod.conf
{"t":{"$date":"2022-06-18T10:13:05.279+08:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
......


3、第二种以配置文件方式启动

E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\bin>mongod --config E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\conf\mongod.conf
{"t":{"$date":"2022-06-18T10:14:05.429+08:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
......

2-2、shell或cmd窗口连接到MongoDB数据库

1、直接mongo
 

E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\bin>mongo
MongoDB shell version v4.4.14
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("0ff2ecee-02a8-4562-867b-10709860f00c") }
MongoDB server version: 4.4.14
Welcome to the MongoDB shell.
......
       To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>


2、第二种方式连接

E:\programfiles\mongodb-win32-x86_64-windows-4.4.14\bin>mongo --host=127.0.0.1 --port=27017
MongoDB shell version v4.4.14
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("20585e17-f3cf-468b-8bc2-c98e1177d0c7") }
......
       To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
>

3、Linux下安装部署MongoDB

1)、上传MongoDB的mongodb-linux-x86_64-rhel70-4.4.14.tgz文件到Linux系统重命名为mongodb,并解压、移动到/usr/local目录。

2)、新建data文件目录:mkdir -p /mongodb/single/data/db

3)、新建日志存储目录:mkdir -p /mongodb/single/log

4)、新建配置文件,内容如下:vi /mongodb/single/mongod.conf

systemLog:
   #MongoDB发送所有日志输出的目标指定为文件
   # #The path of the log file to which mongod or mongos should send all diagnostic                                                                             logging information
   destination: file
   #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
   path: "/mongodb/single/log/mongod.log"
   #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
   logAppend: true
storage:
   #mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
   ##The directory where the mongod instance stores its data.Default Value is   "/data/db".
   dbPath: "/mongodb/single/data/db"
   journal:
      #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
      enabled: true
processManagement:
   #启用在后台运行mongos或mongod进程的守护进程模式。
   fork: true
net:
   #服务实例绑定的IP,默认是localhost
   bindIp: localhost,192.168.2.120
   #bindIp
   #绑定的端口,默认是27017
   port: 27017




5)、启动MongoDB

[root@localhost mongodb]# /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 21424
child process started successfully, parent exiting
[root@localhost mongodb]# 
[root@localhost mongodb]# lsof -i :27017
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  21424 root   12u  IPv4 205682      0t0  TCP localhost.localdomain:27017 (LISTEN)
mongod  21424 root   13u  IPv4 205683      0t0  TCP localhost:27017 (LISTEN)
[root@localhost mongodb]#



三、一些基本命令

获取mongodb key类型 mongodb key value_数据

 

1、创建数据库、删除数据库

[root@localhost bin]# ./mongo --host=192.168.2.120 --port=27017
MongoDB shell version v4.4.14
connecting to: mongodb://192.168.2.120:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ba0c1a21-9dea-4b67-997f-93ab2b22b48b") }
MongoDB server version: 4.4.14
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
        https://community.mongodb.com
---
The server generated these startup warnings when booting: 
        2022-06-18T11:02:23.555+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
        2022-06-18T11:02:24.749+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
        2022-06-18T11:02:24.749+08:00: You are running this process as the root user, which is not recommended
        2022-06-18T11:02:24.749+08:00: Soft rlimits too low
        2022-06-18T11:02:24.749+08:00:         currentValue: 1024
        2022-06-18T11:02:24.749+08:00:         recommendedMinimum: 64000
---
---
        Enable MongoDB's free cloud-based monitoring service, which will then receive and display
        metrics about your deployment (disk utilization, CPU, operation statistics, etc).

        The monitoring data will be available on a MongoDB website with a unique URL accessible to you
        and anyone you share the URL with. MongoDB may use this information to make product
        improvements and to suggest MongoDB products and deployment options to you.

        To enable free monitoring, run the following command: db.enableFreeMonitoring()
        To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
> use articledb     # 有就切换到这个数据库,没有就创建这个数据库
switched to db articledb
> show dbs          # 查看所有数据库,(这个时候没有查看到articledb数据库是因为这个时候还在内存,没有持久化到磁盘)
admin   0.000GB
config  0.000GB
local   0.000GB
> db                # 查看当前数据库
articledb
> db.dropDatabase()  # 用来删除已经持久化的数据库
{ "ok" : 1 }




 

2、集合相关操作

集合:类似于mysql的表。

有显式创建和隐式创建两种方式:显式创建就是直接创建,隐式创建就是默认没有这个集合在插入文档时自动创建集合。

> db.createCollection("myColl1")   # 创建集合
{ "ok" : 1 }
> show collections
myColl1
> db.myColl1.drop()         # 删除集合
true
> show collections          # 再次查看发现myColl1已经不见了
>



3、文档的相关操作

数据结构类似于json,所有存储在集合中的数据都是BSON格式(二进制json格式)。

1)、插入文档数据

> show collections
> db.createCollection("files")  # 新增集合
{ "ok" : 1 }
> show collections              # 查看集合
files
#### 隐式创建集合并插入单条数据
> db.comment.insert({id:1, typeName:"演示专用", typeInfo:"", fkParentId:0, wordTplAddress:"", fkBorrowFlow:1152509}) 
WriteResult({ "nInserted" : 1 })
#### 显式插入单条数据
> db.files.insert({id:1, typeName:"演示专用", typeInfo:"", fkParentId:0, wordTplAddress:"", fkBorrowFlow:1152509})  
WriteResult({ "nInserted" : 1 })
> show collections
comment
files
> db.files.find()  # 查看集合数据
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152509 }
#### 插入多条数据
> 
> db.files.insertMany([{id:2, typeName:"演示专用", typeInfo:"", fkParentId:0, wordTplAddress:"", fkBorrowFlow:1152510},{id:3, typeName:"演示专用", typeInfo:"", fkParentId:0, wordTplAddress:"", fkBorrowFlow:1152511}])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("62ad4bb636b397ddaaaec1d7"),
                ObjectId("62ad4bb636b397ddaaaec1d8")
        ]
}
>

2)、查询数据

> db.files.find()   # 查看所有数据
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152509 }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152510 }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
> db.files.find({id:2})  # 带参查询
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152510 }
> 
> db.files.find({"typeName" : "演示专用"})  ## 条件查询出多条数据
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152509 }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152510 }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
> db.files.findOne({"typeName" : "演示专用"})  ## 只取一条limit
{
        "_id" : ObjectId("62ad497636b397ddaaaec1d5"),
        "id" : 1,
        "typeName" : "演示专用",
        "typeInfo" : "",
        "fkParentId" : 0,
        "wordTplAddress" : "",
        "fkBorrowFlow" : 1152509
}
> 
> db.files.find({"typeName" : "演示专用"},{id:1,typeName:1})  # 投影查询指定字段,默认_id为显示
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "id" : 1, "typeName" : "演示专用" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "id" : 2, "typeName" : "演示专用" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用" }
> db.files.find({"typeName" : "演示专用"},{id:1,typeName:1,_id:0})  # 投影查询指定字段,去掉_id显示
{ "id" : 1, "typeName" : "演示专用" }
{ "id" : 2, "typeName" : "演示专用" }
{ "id" : 3, "typeName" : "演示专用" }
>

2-1)、分页查询

> db.files.find(){ "_id" : ObjectId("62b4360a70d355701ebb38d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4360a70d355701ebb38d9"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
{ "_id" : ObjectId("62b4362e70d355701ebb38da"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4362e70d355701ebb38db"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
{ "_id" : ObjectId("62b436a870d355701ebb38dc"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "jhjukas", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 131 }
{ "_id" : ObjectId("62b436a870d355701ebb38dd"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "abc2jhuia", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 111 }
> 
> 
> db.files.count({id:3}) # 根据条件统计数据条数
4
> db.files.find().limit(2)  # 查询前面两条数据(limit(2))
{ "_id" : ObjectId("62b4360a70d355701ebb38d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4360a70d355701ebb38d9"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
> db.files.find().limit(2).skip(5)  # 先跳过5条数据(skip(5)),在查询前面两条数据(limit(2))
{ "_id" : ObjectId("62b436a870d355701ebb38dd"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "abc2jhuia", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 111 }
> db.files.find().sort({id:1})      # 根据id升序排序
{ "_id" : ObjectId("62b436a870d355701ebb38dd"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "abc2jhuia", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 111 }
{ "_id" : ObjectId("62b436a870d355701ebb38dc"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "jhjukas", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 131 }
{ "_id" : ObjectId("62b4360a70d355701ebb38d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4360a70d355701ebb38d9"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
{ "_id" : ObjectId("62b4362e70d355701ebb38da"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4362e70d355701ebb38db"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
>

2-2)、条件、正则查询


1、正则匹配查询db.files.find({typeInfo:/插入/})


> db.files.find()
{ "_id" : ObjectId("62b4360a70d355701ebb38d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4360a70d355701ebb38d9"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
{ "_id" : ObjectId("62b4362e70d355701ebb38da"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4362e70d355701ebb38db"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
{ "_id" : ObjectId("62b436a870d355701ebb38dc"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "jhjukas", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 131 }
{ "_id" : ObjectId("62b436a870d355701ebb38dd"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "abc2jhuia", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 111 }
{ "_id" : ObjectId("62b6cda28ac70313d8866d59"), "id" : 19, "typeName" : "计划之外", "typeInfo" : "如果某条数据插入失败, 将会终止插入, 但已经插入成功的数据不会回滚掉. 因为批量插入由于数据较多容易出现失败, 因此, 可以使用 try catch 进行异常捕捉处理, 测试的时候可以不处理.如:" }
> db.files.find({typeInfo:/插入/})  # 查询files集合内typeInfo包含‘插入’的文档
{ "_id" : ObjectId("62b6cda28ac70313d8866d59"), "id" : 19, "typeName" : "计划之外", "typeInfo" : "如果某条数据插入失败, 将会终止插入, 但已经插入成功的数据不会回滚掉. 因为批量插入由于数据较多容易出现失败, 因此, 可以使用 try catch 进行异常捕捉处理, 测试的时候可以不处理.如:" }


2、条件查询大于$gt小于$lt大于等于$gte小于等于$lte


> db.files.find({id:{$lt:3}})   #  查询files集合内id小于3的文档内容
{ "_id" : ObjectId("62b436a870d355701ebb38dc"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "jhjukas", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 131 }
{ "_id" : ObjectId("62b436a870d355701ebb38dd"), "id" : 1, "typeName" : "演示专用", "typeInfo" : "abc2jhuia", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 111 }
> db.files.find({id:{$gt:NumberInt(10)}},{id:1})    # 查询files集合内id大于10的文档,只显示id,_id默认显示
{ "_id" : ObjectId("62b6cda28ac70313d8866d59"), "id" : 19 }
> db.files.find({id:{$in:[1,2]}},{id:1})    # 包含in
{ "_id" : ObjectId("62b436a870d355701ebb38dc"), "id" : 2 }
{ "_id" : ObjectId("62b436a870d355701ebb38dd"), "id" : 1 }
> 
> db.files.find({$and:[{id:3},{typeInfo:"abc2"}]})
{ "_id" : ObjectId("62b4360a70d355701ebb38d9"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
{ "_id" : ObjectId("62b4362e70d355701ebb38db"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
>


3、组合条件查询or/and


> db.files.find({$or:[{id:3},{typeInfo:"abc2"}]})
{ "_id" : ObjectId("62b4360a70d355701ebb38d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4360a70d355701ebb38d9"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
{ "_id" : ObjectId("62b4362e70d355701ebb38da"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b4362e70d355701ebb38db"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc2", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 11521 }
>

3)、修改文档数据

> show dbs
admin      0.000GB
articledb  0.000GB
config     0.000GB
local      0.000GB
> use articledb             # 选择数据库
switched to db articledb
> 
> show collections;
comment
files
> 
> db.files.find()           # 查看articledb数据库files集合的全部数据
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "typeInfo" : "updateTypeInfo" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "id" : 2, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152510 }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
> 
> db.files.update({id:2},{typeInfo:"updateTypeInfo1"})  # 覆盖修改,将
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.files.find()
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "typeInfo" : "updateTypeInfo" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
> db.files.update({id:3},{$set:{typeInfo:"局部修改typeInfo"}})  # 局部修改(使用$set来实现)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.files.find()
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "typeInfo" : "updateTypeInfo" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "局部修改typeInfo", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
> 
> db.files.update({id:3},{$set:{typeInfo:"abc"}})   # 局部修改(使用$set来实现)默认修改第一条符合规则的数据
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.files.find()
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "typeInfo" : "updateTypeInfo" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b42f0b229efd15385695f4"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 11981 }
> db.files.update({id:3},{$set:{typeInfo:"abc1"}},{multi:true})     # 局部修改(使用$set来实现){multi:true}修改全部符合规则的数据
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> 
> db.files.find()
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "typeInfo" : "updateTypeInfo" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b42f0b229efd15385695f4"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 11981 }
> 
> db.files.update({id:3},{$inc:{fkParentId:2}})  #  $inc:{fkParentId:2}使列自增2
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.files.find()
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "typeInfo" : "updateTypeInfo" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b42f0b229efd15385695f4"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 11981 }
>

4)、删除数据

> db.files.find()
{ "_id" : ObjectId("62ad497636b397ddaaaec1d5"), "typeInfo" : "updateTypeInfo" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b42f0b229efd15385695f4"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 11981 }
> 
> 
> db.files.remove({typeInfo:"updateTypeInfo"})   # 根据条件{typeInfo:"updateTypeInfo"}删除数据
WriteResult({ "nRemoved" : 1 })
> db.files.find()
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d8"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 2, "wordTplAddress" : "", "fkBorrowFlow" : 1152511 }
{ "_id" : ObjectId("62b42f0b229efd15385695f4"), "id" : 3, "typeName" : "演示专用", "typeInfo" : "abc1", "fkParentId" : 0, "wordTplAddress" : "", "fkBorrowFlow" : 11981 }
> db.files.remove({id:3})   #  根据条件{id:3}删除数据
WriteResult({ "nRemoved" : 2 })
> db.files.find()
{ "_id" : ObjectId("62ad4bb636b397ddaaaec1d7"), "typeInfo" : "updateTypeInfo1" }
> db.files.remove({})  # 删除本集合的所有数据
WriteResult({ "nRemoved" : 1 })
> db.files.find()
>