---
title: 数据映射：NoSQL数据库
date: 2021-11-26
categories:
  - database
  - database-mapping
  - json
tags:
  - data-conversion
  - mapforce
  - nosql-data-mapping
  - nosql-databases
description: MapForce 软件支持对 NoSQL 数据库进行数据映射和转换，可以实现对 NoSQL 数据的插入、提取、过滤和排序。
---
Status: #blog

Tags:  #data-conversion #mapforce #nosql-data-mapping #nosql-databases

Categories: [database + sql](/blog/zh/category/database-sql.md) | [data-integration](/blog/zh/category/data-integration.md) | [json](/blog/zh/category/json.md)
# 数据映射：NoSQL数据库

NoSQL数据库是非关系型数据库，它们以与传统关系型数据库不同的方式存储数据。MongoDB和Apache CouchDB是两种最受欢迎的NoSQL数据库，它们将数据存储为BSON（二进制JSON）和JSON文档的集合。这些数据库利用灵活的JSON数据结构，并且能够轻松地处理大量数据和高用户负载。

Altova MapForce 一直以来都支持 [数据映射](https://www.altova.com/zh/mapforce) 它支持所有主流的关系型数据库，并且现在还提供了对非关系型数据库（NoSQL）的原生支持。MapForce 提供了插入、提取、过滤和排序 NoSQL 数据的功能。下面我们来看一个例子。

![](/blog/images/cbcr_blog_2.jpg)

<!--more-->

以下展示了从 NoSQL MongoDB 数据库中的 "sample_analytics" 数据库的完整数据映射。该映射从多个集合中提取一部分二进制 JSON (BSON) 数据，然后对这些数据进行合并、过滤、转换和排序，最后将结果导出为一个单独的 JSON 文档。

[![将 NoSQL 数据库映射到 JSON 格式的示例](/blog/images/complete-NoSQL-JSON-mapping-1-1030x624.png)](complete-NoSQL-JSON-mapping-1.png)

sample_analytics NoSQL数据库是一个示例，它托管在公开可访问的MongoDB Atlas云服务器上，用于存储一个模拟金融服务应用程序的训练数据。该数据库包含针对500名客户、1746个账户以及1746笔买卖交易的BSON文档集合。

在 MapForce 中，对 NoSQL 数据库进行数据映射的步骤首先是从“插入数据库连接”向导中选择 NoSQL 数据库，并输入连接参数。接下来，您可以选择要进行映射的集合：

[![从 NoSQL 数据库中选择数据集，用于数据映射](/blog/images/insert-database.png)](insert-database.png)

每个集合都需要一个 JSON 模式来映射其对象。这个模式可以存储在数据库中用于验证，也可以是一个外部文件。

[![为该集合分配一个 JSON 模式，用于数据映射](/blog/images/assign-schema.png)](assign-schema.png)

以下是客户和交易数据集合的详细视图，这些数据已准备好在 MapForce 中进行 NoSQL 数据映射

[![NoSQL 集合，已准备好进行数据映射](/blog/images/NoSQL-source.png)](NoSQL-source.png)

在提供 JSON Schema 或示例 JSON 文件来定义输出格式后，我们就可以开始将数据库中的对象与输出进行关联。MongoDB NoSQL 数据库存储的是二进制 JSON 数据。MapForce 函数库包含内置函数，用于处理 BSON 数据：

[![MapForce 包含内置函数，用于处理 BSON 数据](/blog/images/bson-functions.png)](bson-functions.png)

该数据库包含客户信息，其中一些客户的资料中包含gmail、hotmail和yahoo邮箱地址。但我们的数据映射项目需要提取的是仅包含yahoo.com邮箱地址的客户信息。显然，在NoSQL数据库中，没有类似于SQL的Select/Where查询语句来过滤邮箱地址。因此，我们可以将BSON的to-regex函数与MapForce内置的Where/Order结构结合使用，以达到相同的效果：

[![为 NoSQL 数据创建过滤器](/blog/images/bson-function-use.png)](bson-function-use.png)

MapForce中的“Where/排序”选项还可以满足另一个项目需求，即在输出结果中按照客户的出生日期进行排序。

[![MapForce 中“条件/排序”结构的属性对话框](/blog/images/where-order-structure.png)](where-order-structure.png)

BSON 格式支持比 JSON 字符串或数值类型更多的数据格式。MapForce 会自动将 BSON 格式中的日期转换为字符串，以便“格式化日期”函数对其进行处理，从而生成最终输出。

[![MapForce 会自动将 BSON 数据格式转换为字符串](/blog/images/cast-birthdate-1.png)](cast-birthdate-1.png)

结合 MapForce 的 "Where" 和 "Order" 结构以及其他 MapForce 内置函数，可以筛选交易数据，只输出“买入”交易，并将分组和排序后的交易数据与客户数据中的相关信息进行关联。

[![针对 NoSQL 数据库的数据映射，提供了额外的连接、过滤和排序选项](/blog/images/join-and-filter-1-1030x236.png)](join-and-filter-1.png)

输出文件包含所有使用 yahoo.com 邮箱地址的客户，并按账户对该客户的购买订单进行分组。此外，输出文件按照出生日期对客户进行排序，从最年轻到最年长。以下是在 XMLSpy 中显示的 JSON 输出文件的一部分，XMLSpy 是一款流行的工具 [编辑、建模、转换和调试 JSON 以及 XML 数据](https://www.altova.com/zh/xmlspy-xml-editor) 技术：

[![XMLSpy 软件中，以表格视图展示的 NoSQL 数据映射输出文件的部分内容](/blog/images/json-output-sample-4.png)](json-output-sample-4.png)

用户按照出生日期降序排列，每个账户的购买交易则按照输出结果中JSON“name”对象的字母顺序排列。

如果您需要定期重复处理以收集最新的交易数据，MapForce Server 可以为您提供支持 [自动执行数据映射过程](https://www.altova.com/zh/mapforce-server) 采用 MapForce 设计

MapForce 是一款强大的数据映射工具，可将 NoSQL 数据库的数据映射到或从以下任何一种格式：XML、JSON、数据库、EDI、XBRL、纯文本文件、Excel 以及/或 Web 服务。 想要体验它在您自己的 NoSQL 数据映射应用中的效果，请立即下载一个[完全功能、免费试用版](https://www.altova.com/zh/download-trial.html)！
