mongodb - Azure MongoDB + Synapse 链接 : Column values unexpectedly contain JSON

标签 mongodb azure azure-cosmosdb azure-synapse

我正在关注this tutorial并创建了 Azure MongoDB (Mongo API) 和 Synapse Workspace,将 ECDC 数据导入 MongoDB 并将其连接到 Synapse Workspace。到目前为止,一切都很好。 但是,当我查询数据时,例如我得到的字符串列 date_rep {"string":"2020-12-14"} 而不仅仅是 2020-12-14

我使用的查询是:

SELECT TOP 10 *
FROM OPENROWSET(​PROVIDER = 'CosmosDB',
                CONNECTION = 'Account=analytcstest;Database=ecdc',
                OBJECT = 'ecds',
                SERVER_CREDENTIAL = 'analytcstest'
)  with ( date_rep varchar(200) ) as rows

当不指定“with”子句来自动推断架构时,我遇到了同样的问题:

SELECT TOP 10 *
FROM OPENROWSET(​PROVIDER = 'CosmosDB',
                CONNECTION = 'Account=analytcstest;Database=ecdc',
                OBJECT = 'ecds',
                SERVER_CREDENTIAL = 'analytcstest'
)  as rows

screenshot query

我当然可以像这样解析它,但我不明白为什么我必须这样做,而且它不在文档中?

SELECT TOP 10 JSON_VALUE([date_rep], '$.string') AS [date_rep]
FROM OPENROWSET(​PROVIDER = 'CosmosDB',
                CONNECTION = 'Account=analytcstest;Database=ecdc',
                OBJECT = 'ecds',
                SERVER_CREDENTIAL = 'analytcstest'
)  with ( date_rep varchar(200) ) as rows

最佳答案

当我使用 CosmosDB for Mongo API 时,我尝试在我的环境中重现类似的事情并获得类似的输出数据类型的值:

enter image description here

这可能是因为MongoDB 的 Azure Cosmos DB API 通过 BSON 格式以文档结构存储数据。它是 JSON 文档的二进制编码序列化。 BSON 已进行扩展,添加了一些可选的非 JSON 原生数据类型,例如日期和二进制数据。

Cosmos DB API for MongoDB 旨在提供 MongoDB 体验,并通过将应用程序指向 MongoDB 帐户的连接字符串的 API 来继续使用您最喜爱的 MongoDB 驱动程序、SDK 和工具。

当我使用 CosmosDB for SQL API 尝试类似的操作时,它以 Json 格式存储数据,并且给出了适当的结果。

enter image description here

有关 BSON 的更多信息,请参阅此 Document

关于mongodb - Azure MongoDB + Synapse 链接 : Column values unexpectedly contain JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74309581/

相关文章:

php - MongoDB + PHP : support for SSL?

mongodb - 我可以通过 Node 驱动程序访问 mongo 的 geoNear 功能吗?

azure - 宇宙数据库 : Find the index of an item in an array

java - 从 MongoDB 文档检索 'int' 字段会抛出 NullPointerException

php - 负载均衡器 - Web 应用程序 AZURE

c# - 如何保护 azure Blob

reactjs - 发布后访问 .env 文件变量

c# - Azure 函数异常 - 将日志写入表存储时出错 : Microsoft. Azure.Cosmos.Table.StorageException

azure - 使用 Cassandra 连接到 Azure Cosmos DB 时出现 UnknownHostException

MongoDB/Mongoose 对日期字段的唯一约束