Docs 菜单
Docs 主页
/
MongoDB 阿特拉斯
/ / /

createStore

在此页面上

  • 语法
  • 参数
  • 输出
  • 例子
  • 故障排除错误

createStore命令会在联合数据库实例存储配置中创建一个存储。 单击下面的标签页,了解有关为数据源创建联合数据库实例存储的更多信息。

此标签页包含用于为 AWS S 3存储桶中的数据创建联合数据库实例存储的语法和参数。

重要

您无法创建同时映射到AWS S 3存储桶和 Azure Blob 存储容器的联合数据库实例。 Atlas Data Federation 不支持跨不同云提供商的联合查询。

此标签页包含用于为 Azure Blob 存储容器中的数据创建联合数据库实例存储的语法和参数。

注意

您无法创建同时映射到 Azure Blob 存储容器和AWS S 3存储桶的联合数据库实例。 Atlas Data Federation 不支持跨不同云提供商的联合查询。

此标签页包含用于为 Atlas 集群中的数据创建联合数据库实例存储的语法和参数。

此标签页包含用于为托管在可公开访问的 URL 上的文件中的数据创建 HTTP 联合数据库实例存储的语法和参数。

注意

预览

对 HTTP 数据存储的支持是作为一个预览功能提供的。在预览阶段,该功能及相应的文档可能随时更改。

此标签页包含用于为 Atlas Online Archives 创建联合数据库实例存储的语法和参数。

db.runCommand({ createStore: <store-name>, provider: <storage-provider>, region: <region-name>, bucket: <bucket-name>, additionalStorageClasses: [ <storage-classes> ], delimiter: <delimiter>, public: true|false })
db.runCommand({ createStore: <store-name>, provider: <storage-provider>, region: <region-name>, serviceURL: <service-account-URL>, containerName: <storage-container-name>, delimiter: <delimiter>, public: true|false })
db.runCommand({ createStore: <store-name>, provider: <storage-provider>, clusterName: <cluster-name>, projectId: <project-id>, readPreference: {mode: <read-preference-mode>, tagSets: [[{name: <name>, value: <value>},...],...], maxStalenessSeconds: <number-of-seconds>}, readConcern: {level: <level>} })
db.runCommand({ createStore: <store-name>, provider: <storage-provider>, allowInsecure: true|false, urls: [ <url> ], defaultFormat: <file-extension> })
db.runCommand({ createStore: <store-name>, provider: "dls:aws", region: <online-archive-region> })
参数
类型
说明
必需?
createStore
字符串
新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。
provider
字符串

存储数据的服务的名称。 值可以是以下之一:

  • s3 用于Amazon Web Services S3存储桶。

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于 Atlas 集群。

  • http 用于托管在可公开访问的URL上的文件。

  • dls:<subtype> 用于在线存档。 Atlas Data Federation 支持以下子类型:

    • aws - 适用于存储在AWS上的数据。值必须是dls:aws

    • azure - 适用于存储在Azure上的数据。值必须是dls:azure

region
字符串
托管bucket的区域。有关有效地区名称的列表,请参阅 Amazon Web Services (AWS)。
bucket
字符串
存储数据的存储桶的名称。必须与在给定配置的 AWS IAM 档案 的情况下数据联合可以访问的 S 存储桶的名称完全匹配。3
additionalStorageClasses
字符串数组

AWS S3 存储类 数组 。 Atlas Data Federation 将在查询结果中包含这些存储类中的文件。有效值为:

  • INTELLIGENT_TIERING 将文件包含在 智能分层 存储类。

  • STANDARD_IA 将文件包含在 标准 - 不频繁访问 存储类。

标准 中的文件 默认支持存储类。

没有
delimiter
字符串
用于分隔联合数据库实例存储中路径段的字符。 如果省略,则默认为"/"
没有
public
布尔

指示存储桶是否公开的标志。 有效值为:

  • true 不使用AWS IAM角色访问存储桶

  • false 要求AWS IAM角色访问存储桶

如果省略,则默认值为 false

没有
参数
类型
说明
必需?
createStore
字符串
新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。
provider
字符串

存储数据的服务的名称。 值可以是以下之一:

  • s3 用于Amazon Web Services S3存储桶。

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于 Atlas 集群。

  • http 用于托管在可公开访问的URL上的文件。

  • dls:<subtype> 用于在线存档。 Atlas Data Federation 支持以下子类型:

    • aws - 适用于存储在AWS上的数据。值必须是dls:aws

    • azure - 适用于存储在Azure上的数据。值必须是dls:azure

region
字符串
托管容器的区域。有关有效地区名称的列表,请参阅Microsoft Azure。
serviceURL
字符串

包含 blob 容器的 Azure Blob 存储帐户的URL 。例如:

https://<azure-storage-account-name>.blob.core.windows.net/
containerName
字符串
包含文件的 Azure Blob 存储容器的名称。有关详细信息,请参阅有关 命名和引用容器 的 Azure 文档。
delimiter
字符串
用于分隔联合数据库实例存储中路径段的字符。如果省略,则默认为"/"
没有
public
布尔

指示 Azure Blob 存储容器是否为公用的标志。有效值为:

  • true 不使用Azure服务主体访问存储桶

  • false 要求Azure服务主体访问存储桶

如果省略,则默认值为 false

没有
参数
类型
说明
必需?
createStore
字符串
新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。
provider
字符串

存储数据的服务的名称。 值可以是以下之一:

  • s3 用于Amazon Web Services S3存储桶。

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于 Atlas 集群。

  • http 用于托管在可公开访问的URL上的文件。

  • dls:<subtype> 用于在线存档。 Atlas Data Federation 支持以下子类型:

    • aws - 适用于存储在AWS上的数据。值必须是dls:aws

    • azure - 适用于存储在Azure上的数据。值必须是dls:azure

clusterName
字符串
商店所基于的 Atlas 集群的名称。
projectId
字符串
包含 Atlas 集群的项目的唯一标识符。如果未指定,Atlas Data Federation 假定集群与联合数据库实例位于同一项目中。
没有
readPreference
文档
集群读取偏好,描述如何将读取请求路由到集群。
没有
readPreference
.mode
字符串

读取偏好模式,用于指定将读取请求路由到哪个副本集成员。值可以是以下之一:

  • primary — 将所有读取请求路由到副本集主节点

  • primaryPreferred - 仅当primary不可用时,将所有读取请求路由到副本集主节点和从节点成员

  • secondary - 将所有读取请求路由到副本集的从节点

  • secondaryPreferred - 仅当 成员不可用时,将所有读取请求路由到副本集的从 节点和分片集群上的主secondary 节点

  • nearest - 将所有读取请求路由到符合条件的随机副本集成员,无论该成员是主节点还是从节点

没有
readPreference
.tagSets
字符串数组

包含副本集节点的名称和值对的标签集或标签规范文档的数组。如果指定,Atlas Data Federation 会将读取请求路由到一个或多个与指定标签关联的副本集节点。要了解更多信息,请参阅读取偏好标签集。

Atlas Data Federation 不支持对分片集群使用此参数。

没有
readPreference
.maxStalenessSeconds
int
从节点读取的最大复制延迟或“陈旧度”。要了解有关maxStalenessSeconds的更多信息,请参阅读取偏好 maxStalenessSeconds。
没有
参数
类型
说明
必需?
createStore
字符串
新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。
provider
字符串

存储数据的服务的名称。 值可以是以下之一:

  • s3 用于Amazon Web Services S3存储桶。

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于 Atlas 集群。

  • http 用于托管在可公开访问的URL上的文件。

  • dls:<subtype> 用于在线存档。 Atlas Data Federation 支持以下子类型:

    • aws - 适用于存储在AWS上的数据。值必须是dls:aws

    • azure - 适用于存储在Azure上的数据。值必须是dls:azure

allowInsecure
布尔

验证指定URL中的模式。值可以是以下之一:

  • true 允许不安全的HTTP方案

  • false 仅允许安全的HTTPS方案(默认)

如果为 true,则 Atlas Data Federation:

  • 不验证服务器的证书链和主机名。

  • 接受服务器提供的具有任何主机名的任何证书。

警告:如果将其设置为true ,您的数据可能会容易受到中间人攻击,从而损害数据的机密性和完整性。仅在测试和开始使用 Atlas Data Federation 时才将其设置为true

如果省略,则默认值为 false

没有
urls
字符串数组或空数组
一个或多个可公开访问的URL 。不能指定需要身份验证的URL
没有
defaultFormat
字符串

Data Federation 在查询联合数据库实例存储时遇到不带扩展名的文件时默认采用的格式。 以下值是有效的:

.json, .json.gz , .bson , .bson.gz , .avro , .avro.gz , .orc , .tsv , .tsv.gz , .csv , .csv.gz , .parquet

如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。

如果包含,则指定的格式仅适用于存储中的URL

没有
参数
类型
说明
必需?
createStore
字符串
新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。
provider
字符串

存储数据的服务的名称。 值可以是以下之一:

  • s3 用于Amazon Web Services S3存储桶。

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于 Atlas 集群。

  • http 用于托管在可公开访问的URL上的文件。

  • dls:<subtype> 用于在线存档。 Atlas Data Federation 支持以下子类型:

    • aws - 适用于存储在AWS上的数据。值必须是dls:aws

    • azure - 适用于存储在Azure上的数据。值必须是dls:azure

region
字符串
在线存档的区域。如果您在不同区域有多个存档,则必须为每个区域添加一个存储,以将该区域中的数据映射到联合数据库实例中的虚拟数据库和集合。

如果成功,该命令将打印以下输出。 如果命令失败,请参阅排除错误以获取建议的解决方案。

{
"ok": 1,
"store": {
"name": "<store-name>",
"region": "<region-name>",
"bucket": "<bucket-name>",
"additionalStorageClasses": ["<storage-classes>"]
"delimiter": "<delimiter>",
"provider": "<storage-provider>"
}
}
{
"ok": 1,
"store": {
"name": "<store-name>",
"region": "<region-name>",
"serviceURL": "<service-account-URL>",
"containerName": "<storage-container-name>"
"delimiter": "<delimiter>",
"provider": "<storage-provider>"
}
}
{
"ok" : 1,
"store" : {
"name" : "<store-name>",
"provider" : "<storage-provider>",
"clusterName" : "<cluster-name>",
"projectId" : "<project-id>",
"readPreference" : {
"mode" : "<read-preference-mode>",
"tagSets" : [[{"name": "<name>", "value": "<value>"},...],...],
"maxStalenessSeconds" : <number-of-seconds>
}
}
}
{
"ok" : 1,
"store" : {
"name" : "<store-name>",
"provider" : "<storage-provider>",
"allowInsecure" : true|false,
"urls" : [
"<url>"
],
"defaultFormat: "<file-extension>"
}
}
{
ok: 1,
store: {
name: '<store-name>',
provider: 'dls:aws',
region: '<online-archive-region>'
}
}

以下示例使用createStore命令创建一个名为myStore的新联合数据库实例存储。

use sample
db.runCommand({ createStore: "myStore", provider: "s3", region: "us-east-1", bucket: "my-bucket", "additionalStorageClasses" : ["STANDARD_IA","INTELLIGENT_TIERING"] })
{
"ok": 1,
"store": {
"name": "myStore",
"region": "us-east-1",
"bucket": "my-bucket",
"additionalStorageClasses" : [
"STANDARD_IA",
"INTELLIGENT_TIERING"
],
"delimiter": "/",
"provider": "s3"
}
}
use sample
db.runCommand({ createStore: "myStore", provider: "azure", region: "eastus2", serviceURL: "https://mystorage.blob.core.windows.net/", "containerName" : "my-data-container" })
{
"ok": 1,
"store": {
"name": "myStore",
"region": "eastus2",
"serviceURL": "https://mystorage.blob.core.windows.net/",
"containerName" : "my-data-container",
"delimiter": "/",
"provider": "azure"
}
}
use sample
db.runCommand({ createStore: "myStore", provider: "atlas", clusterName: "myTestCluster", projectId: "<project-id>", "readPreference": {"mode": "secondary", "tagSets": [[{"name": "provider", "value": "AWS" }, {"name": "region", "value": "US_EAST_1"}]], "maxStalenessSeconds": 120} })
{
"ok" : 1,
"store" : {
"name" : "myStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>",
"readPreference" : {
"mode" : "secondary",
"tagSets": [[{"name": "provider", "value": "AWS" }, {"name": "region", "value": "US_EAST_1"}]],
"maxStalenessSeconds" : 120
}
}
}
use sample
db.runCommand({ createStore: "myStore", provider: "http", urls: ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews","http://example.mongodb.com/sampleData"], allowInsecure: true, defaultFormat: ".json" })
{
"ok" : 1,
"store" : {
"name" : "http-store",
"provider" : "http",
"urls" : [
"https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews",
"http://example.mongodb.com/sampleData"
],
"defaultFormat" : ".json"
"allowInsecure" : true
}
}
use sample
db.runCommand({ createStore: "myStore", provider: "dls:aws", region: "us-east-1" })
{
ok: 1,
store: {
name: 'myStore',
provider: 'dls:aws',
region: 'us-east-1'
}
}

如果命令失败,则返回以下错误之一。

原因:已存在具有createStore中指定名称的联合数据库实例存储。

{
"ok": 0,
"errmsg": "store <store-name> already exists",
"code": 2,
"codeName": "BadValue"
}

解决方案:为联合数据库实例存储指定唯一名称。

原因:无法识别指定的provider

{
"ok": 0,
"errmsg": "unrecognized store provider <storage-provider>",
"code": 2,
"codeName": "BadValue"
}

解决方案:确保指定有效的存储提供商。

原因:一个或多个给定URL包含不安全的HTTP方案。

{
"ok" : 0,
"errmsg" : "store 'httpStore': the insecure HTTP scheme is not supported by default - please add a 'allowInsecure: true' flag to the store or datasource to query from such URLs, correlationID = 16332c6eddf7b32776fde638",
"code" : 72,
"codeName" : "InvalidOptions"
}

解决方案: 使用安全 HTTPS 方案指定 URL 。如果指定的 URL 采用不安全的 HTTP 模式,则将allowInsecure 标志设置为true 。请注意,将allowInsecure 标志设置为true 会使您的数据容易受到中间人攻击。

后退

管理配置