本文介绍: MongoDB 是一种面向文档的,采用 BSON(Binary JSON)格式存储数据不同传统关系数据库,MongoDB 不使用表(table)的概念,而是使用集合collection)来组织文档document),文档是 MongoDB 中的一个基本单位,类似于关系数据库中的一行记录一个文档键值对(字段和值)组成,并使用 BSON 格式表示每个文档都有一个特殊字段唯一标识它。

 MongoDB 是一种面向文档关系数据库管理系统采用 BSON(Binary JSON)格式存储数据

不同传统关系数据库,MongoDB 不使用表(table)的概念,而是使用集合collection)来组织文档document),文档是 MongoDB 中的一个基本单位,类似于关系数据库中的一行记录一个文档键值对(字段和值)组成,并使用 BSON 格式表示每个文档都有一个特殊字段  _id 来唯一标识它。

以下是一个简单例子假设我们创建一个存储用户信息集合 users,每个用户有姓名、年龄电子邮件字段。在 MongoDB 中,这可以表示为以下的 BSON 文档:

{
"_id": ObjectId("6566f7c68c8e613fce1b75bc"),
"name":"张三",
"age": 30,
"email": "zhangsan@163.com"
}

注意上述的 ObjectId 是 MongoDB 自动生成的文档标识符。在实际应用中,你可以让 MongoDB 自动生成 _id,也可以自己定义一个唯一的值。 

Apifox 为 MongoDB 数据库提供了基本可视化操作例如上述的 BSON 文档,在 Apifox通过 _id 查询这个文档时,你不需要写入类似 

db.users.findOne({  _id: new  ObjectId("6566f...") }); 

这样的命令,只需要在「查询条件」中使用 JSON 撰写相应的内容即可通过  _id 查询文档时写入的 JSON 如下所示

{  
"_id": "6566f7c68c8e613fce1b75bc"
}

Apifox 会自动处理唯一标识 _id 中的 ObjectId()。

图片

操作数据库时,如果基本的「操作类型」无法满足你的需求,你也可以直接运行数据库命令,以执行高级操作

需要注意的是,这里提到的「数据库命令」并不是指像 db.collection.findOne() 这样的方法调用,而是一个特定格式的 JSON 数据

例如上面的 BSON 文档,如果要使用数据库命令来查询其值,在将操作类型选择为「运行数据命令」后,其查询的 JSON 数据可以写为:

{
"find": "users",
"filter": {
"_id": "6566f7c68c8e613fce1b75bc"
}
}

图片

简单来讲,Apifox 提供了两种方式操作 MongoDB 数据库,一种是基本可视化操作包含增删改查),另一种是更高级数据库命令操作。两种方式修改 MongoDB 数据库时都是通过提交 JSON 格式文件来达到目的

下文通过一个具体的例子来讲述如何在 Apifox 中操作 MongoDB 数据库。

连接 MongoDB 数据库

假设在数据库中存在一个名为 users 的集合,并在集合中有相应的 BSON 文档。

{
"name":"张三",
"age": 30,
"email": "zhangsan@163.com"
},
{
"name":"李四",
"age": 30,
"email": "bob.johnson@example.com"
},
"name":"王五",
"age": 22,
"email": "eva.williams@example.com"
}

图片

要在 Apifox 中操作 MongoDB 数据库,需在「前置/后置操作」中选择「数据库操作」,然后在「数据库连接」中选择已有的数据库连接,填入相关的操作名称集合名、查询条件等,最后将「控制台打印结果按钮开启

图片

如果没有「数据库连接」,可以新建一个进行配置,数据库类型选择 MongoDB,并填入数据库地址端口等。

图片

相关选项中的信息填写完毕,就可以尝试连接,点击发送按钮,如果控制台中输出了相应的内容说明连接成功

图片

操作 MongoDB 数据库

对 MongoDB 数据库进行操作时,可以通过基本可视化操作(根据操作类型写入相关 JSON)、也可以使用数据库命令,下面根据上文的 users 集合列举一些常用增删改查操作。

1 查询单个文档(findOne)

需求 根据 _id 查询单个文档。

实现 在「数据库操作」中,选择操作类型为「查询单个文档」,查询条件中输入的 JSON 数据为:

{
"_id": "6566f7c68c8e613fce1b75bc"
}

如果通过「数据库命令」的方式,那么上面的查询条件可等价为如下的 JSON:

{
"find": "users",
"filter": {
"_id": "6566f7c68c8e613fce1b75bc"
}

图片

2 查询多个文档(find

需求 查询 age 为 30 的所有文档。

实现 操作类型选择「查询多个文档」,查询条件中输入的 JSON 数据为:

{
"age":30
}

如果通过「数据库命令」的方式,那么上面的查询条件可等价为如下的 JSON:

{
"find": "users",
"filter":
"age": 30
}

图片

3 插入单个文档(insertOne)

需求 插入单个文档到数据库。

实现 操作类型选择为「插入单个文档」,文档中输入的 JSON 数据为:

{
"name":"lili",
"age":20,
"email": "lili@163.com"
}

如果通过「数据库命令」的方式,那么上面插入的文档可等价为如下的 JSON:

{
"insert": "users",
"documents
"name": "lili",
"age": 20,
"email": "lili@163.com"
}

这里注意几点:

图片

4 插入多个文档(insertMany

需求 插入多个文档到数据库。

实现 操作类型选择为「插入多个文档」,文档中输入的 JSON 数据为:

[
 {
"name":"wangwang",
"age":20,
"email": "wangwang@163.com"
},

{
"name":"zhangzhang",
"age":30,
"email":"zhangzhang@qq.com"
 }
]

如果通过「数据库命令」的方式,那么上面插入的文档可等价为如下的 JSON:

{  "insert": "users", 
"documents": [  
{   
"name":"wangwang",   
"age":20,   
"email":"wangwang@163.com"  
}, 
{     
"name":"zhangzhang",  
"age":30,    
"email":"zhangzhang@qq.com" 
} 
]
}

图片

5 更新单个文档(updateOne)

需求 将数据库集合某个文档进行更新

实现 操作类型选择为「更新单个文档」,文档中输入的 JSON 数据为:

  1. 填写查询条件:
{  
 "_id":"656718d724d1ffab1ee34e09"
 }
  1. 填写更新内容
 { 
 "name":"小张",    "age":35
 }

如果通过「数据库命令」的方式,那么上面更新的文档可等价为如下的 JSON:

    { 
    "update": "users", 
    "updates": [  
    {    
    "q": { "_id": "656718d724d1ffab1ee34e09" },  
    "u": { "$set": { "name":"小张","age": 35 } }, 
    "upsert": false    } 
    ]
    }

这里的字段说明如下:

1. “update” 键表示要在哪个集合上进行更新操作;

2. “updates” 数组包含一个或多个更新操作,每个更新操作是一个对象包含以下键:

图片

6 更新多个文档(updateMany

需求 将文档中年龄为 20 的更改为年龄为 30 的。

实现 操作类型选择为「更新多个文档」,文档中输入的 JSON 数据为:

  1. 查询条件:
    {  
    "age": 20
    }
  1. 更新内容
{  
"age":35
}

如果通过「数据库命令」的方式,那么上面更新的文档可等价为如下的 JSON:

    { 
    "update": "users",
    "updates": [ 
    {
    "q": { "age": 20 }, 
    "u": { "$set": { "age": 35 } },  
    "upsert": false   
    } 
    ]
    }

7 删除单个文档(deleteOne)

需求 根据  _id 来删除单个文档。

实现: 操作类型选择「删除单个文档」,查询条件中输入的 JSON 数据为:

{
"_id": "6567176024d1ffab1ee34e06"
}

如果通过「数据库命令」的方式,那么上面的查询条件可等价为如下的 JSON:

   {
    "delete": "users", 
    "deletes": [  
    {    
    "q": { "_id": "6567176024d1ffab1ee34e06" },
    "limit": 1   
    } 
    ]
    }

这里的字段说明如下:

对于每个删除请求

image.png

8 删除多个文档(deleteMany

需求 根据  _id 来删除多个文档。

实现: 操作类型选择「删除多个文档」,查询条件中输入的 JSON 数据为:

    { 
    "_id": [
    "656718d724d1ffab1ee34e08",   
    "656718d724d1ffab1ee34e09" 
    ]
    }

如果通过「数据库命令」的方式,那么上面的查询条件可等价为如下的 JSON:

    {
    "delete":
    "users", 
    "deletes": [ 
    {  
    "q": { "_id": "65683575d0c31d6a9321c69a" }, 
    "limit": 0  
    },  
    {    
    "q": { "_id": "65683575d0c31d6a9321c69b" },  
    "limit": 0 
    }
    ]
    }

将 “limit” 设置为 0,表示删除所有匹配的文档,deleteMany 命令对应的是 “limit” 设置为 0。

原文地址:https://blog.csdn.net/m0_71808387/article/details/134812557

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49374.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注