Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

createStore

在此页面上

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

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

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

重要

Atlas Data Federation不支持跨不同云提供商的联合查询。 您只能创建映射到单个云提供商上的存储的联合数据库实例。

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

重要

Atlas Data Federation不支持跨不同云提供商的联合查询。 您只能创建映射到单个云提供商上的存储的联合数据库实例。

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

重要

Atlas Data Federation不支持跨不同云提供商的联合查询。 您只能创建映射到单个云提供商上的存储的联合数据库实例。

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

此标签页包含用于为托管在可公开访问的 URL 上的文件中的数据创建 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>, region: <region-name>, bucket: <bucket-name>, delimiter: <delimiter>, prefix: <prefix> })
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> })
Parameter
类型
说明
必需?

createStore

字符串

新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。

provider

字符串

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

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

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于Atlas 集群。

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

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

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

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

region

字符串

托管bucket的区域。 有关有效地区名称的列表,请参阅 Amazon Web Services ( Amazon Web Services )。

bucket

字符串

存储数据的存储桶的名称。 必须与Data Federation可使用Amazon Web Services Amazon Web Services凭证档案访问权限的 S3Data Federation 存储桶的名称完全匹配。

additionalStorageClasses

字符串数组

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

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

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

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

no

delimiter

字符串

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

no

public

布尔

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

  • true 不使用Amazon Web Services IAM角色访问权限存储桶

  • false 以要求Amazon Web Services IAM角色访问权限存储桶

如果省略,则默认值为 false

no

Parameter
类型
说明
必需?

createStore

字符串

新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。

provider

字符串

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

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

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于Atlas 集群。

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

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

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

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

region

字符串

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

bucket

字符串

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

https://<azure-storage-account-name>.blob.core.windows.net/

containerName

字符串

包含文件的Azure Blob 存储容器的名称。 有关详细信息,请参阅有关 命名和引用容器 的 Azure 文档。

delimiter

字符串

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

no

public

布尔

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

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

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

如果省略,则默认值为 false

no

Parameter
类型
说明
必需?

createStore

字符串

新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。

provider

字符串

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

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

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于Atlas 集群。

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

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

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

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

region

字符串

bucket

字符串

存储数据的存储桶的名称。 必须与Data Federation可使用配置的Google Cloud Platform 凭证档案访问权限的Google CloudGoogle Cloud PlatformData Federation Google Cloud PlatformPlatform存储桶的名称完全匹配。

delimiter

字符串

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

no

prefix

布尔

Prefix AtlasAtlas Data Federation Data Federation在GoogleGoogle Cloud Platform Cloud Platform Storage 存储桶中搜索文件时适用。示例,考虑具有以下结构的GoogleGoogle Cloud Platform Cloud Platform Storage 存储桶metrics

metrics
|--hardware
|--software
|--computed

联合数据库实例存储将 prefix 的值预先添加到 databases.[n].collections.[n].dataSources.[n].path 中,以创建要引入的文件的完整路径。将 prefix 设置为 /software 会将使用联合数据库实例的任何 databases 对象限制为仅 /software 的子路径。

默认为GoogleGoogle Cloud Platform Cloud Platform Storage 存储桶的根,检索所有文件。

no

Parameter
类型
说明
必需?

createStore

字符串

新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。

provider

字符串

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

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

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于Atlas 集群。

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

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

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

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

clusterName

字符串

存储所基于的Atlas 集群的名称。

projectId

字符串

包含Atlas 集群的项目的唯一标识符。 如果未指定, Atlas Data Federation假定集群与联合数据库实例位于同一项目中。

no

readPreference

文档

集群读取偏好(read preference),描述如何将读取请求路由到集群。

no

readPreference
.mode

字符串

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

no

readPreference
.tagSets

字符串数组

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

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

no

readPreference
.maxStalenessSeconds

int

从节点读取的最大复制延迟或“陈旧度”。 要学习;了解有关maxStalenessSeconds的更多信息,请参阅读取偏好 maxStalenessSeconds。

no

Parameter
类型
说明
必需?

createStore

字符串

新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。

provider

字符串

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

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

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于Atlas 集群。

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

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

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

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

allowInsecure

布尔

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

  • true 允许不安全的HTTP方案

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

如果为 true,则 Atlas Data Federation:

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

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

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

如果省略,则默认值为 false

no

urls

字符串大量或空大量

一个或多个可公开访问的URL 。 不能指定需要身份验证的URL

no

defaultFormat

字符串

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

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

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

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

no

Parameter
类型
说明
必需?

createStore

字符串

新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。

provider

字符串

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

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

  • azure 用于 Azure Blob 存储容器。

  • atlas 用于Atlas 集群。

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

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

    • aws - 适用于存储在Amazon Web Services上的数据。 值必须是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>",
"region": "<region-name>",
"bucket": "<storage-container-name>"
"delimiter": "<delimiter>",
"prefix": "<prefix>",
"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: "azure", region: "us-central1", "bucket" : "my-data-container" })
{
"ok": 1,
"store": {
"name": "myStore",
"region": "us-central1",
"bucket" : "my-data-container",
"delimiter": "/",
"provider": "gcp"
}
}
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会使您的数据容易受到中间人攻击。

后退

管理配置