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

create

在此页面上

  • 语法
  • 参数
  • 输出
  • 示例
  • 验证集合
  • 故障排除错误

create命令会为联合数据库实例存储配置中的现有stores或集合视图集合视图

通配符"*"可以通过两种方式与create命令一起使用:

  • 作为collection的名称,用于动态创建映射到指定stores联合数据库实例存储中的文件和文件夹的collection。

  • path参数中创建一个集合,该集合映射到stores联合数据库实例存储上指定文件路径中的多个文件和文件夹。

单击“标签页”,了解有关创建集合或视图的更多信息。

此标签页包含用于创建collection的语法和参数。选择联合数据库实例存储对应的标签页,详细了解该联合数据库实例存储的语法和参数。

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

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

此标签页包含为GoogleGoogle Cloud Platform Cloud Platform联合数据库实例存储创建集合的语法和参数。

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

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

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

此标签页包含为源集合或通过管道中的SQL声明指定的集合创建视图的语法和参数。

此标签页描述了创建对另一个集合运行聚合管道的标准视图的语法和参数。

此标签页描述了使用 $sql阶段创建SQL视图的语法和参数。

db.runCommand({ "create" : "<collection-name>|*", "dataSources" : [{ "storeName" : "<store-name>", "path" : "<path-to-files-or-folders>", "defaultFormat" : "<file-extension>", "omitAttributes": <boolean> }]})
db.runCommand({ "create" : "<collection-name>|*", "dataSources" : [{ "storeName" : "<store-name>", "path" : "<path-to-files-or-folders>", "defaultFormat" : "<file-extension>", "omitAttributes": <boolean> }]})
db.runCommand({ "create" : "<collection-name>|*", "dataSources" : [{ "storeName" : "<store-name>", "path" : "<path-to-files-or-folders>", "defaultFormat" : "<file-extension>", "omitAttributes": <boolean> }]})
db.runCommand({ "create" : "<collection-name>"|"*", "dataSources" : [{ "storeName" : "<store-name>", "database" : "<atlas-database-name>", "collection" : "<atlas-collection-name>" | "collectionRegex": "<regex-pattern>" }]})
db.runCommand({ "create" : "<collection-name>", "dataSources" : [{ "storeName" : "<store-name>", "allowInsecure" : true|false, "urls" : [ "<url>" ], "defaultFormat" : "<file-extension>" }]})
db.runCommand({ "create" : "<collection-name>|*", "dataSources" : [{ "storeName" : "<store-name>", "datasetName" : "<online-archive-dataset-name>", "datasetPrefix": "<prefix-name>", "trimLevel" : <trim-number>, "maxDatasets": <maximum-number-of-datasets> }]})
db.runCommand({ "create" : "<view-name>", "viewOn" :" <collection-name>", "pipeline" : ["<stage1>","<stage2>",...] })
db.runCommand({ "create" : "<view-name>", "pipeline" : ["$sql": {"statement": "<SQL-statement>", "excludeNamespaces": true | false ]} })
Parameter
类型
说明
必要性
<collection-name>|*
字符串

Data Federation将联合数据库实例存储中包含的数据映射到的collection的名称,或者是通配符"*"以动态创建collection。

您可以通过为集合名称指定*并在dataSources.collection字段中指定collectionName()函数,从文件路径动态生成集合名称。 默认Atlas Data Federation最多创建100通配符collection。您可以使用databases.[n].maxWildcardCollections参数自定义 Atlas Data Federation 自动生成的通配符collection的最大数量。 请注意,每个通配符collection只能包含一个dataSource

必需
dataSources
对象

对象数组,其中每个对象代表在stores数组中要与collection映射的联合数据库实例存储。

必需
dataSources.storeName
字符串

要映射到collection的联合数据库实例存储的名称。该值必须与stores数组中的stores.[n].name匹配。

必需
dataSources.path
字符串
文件和文件夹的路径。 指定/以捕获prefix路径中的所有文件和文件夹。 有关详细信息,请参阅为 S 3数据定义路径
必需
dataSources.defaultFormat
字符串

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

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

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

Optional
dataSources.omitAttributes
布尔

标志,指定是否省略Atlas Data Federation添加到集合中的属性(键和值对)。 您可以指定以下值之一:

  • false - 要添加属性

  • true - 省略这些属性

如果省略,则默认为 false,Atlas Data Federation 会添加属性。

Optional
Parameter
类型
说明
必要性
<collection-name>|*
字符串

Data Federation将联合数据库实例存储中包含的数据映射到的collection的名称,或者是通配符"*"以动态创建collection。

您可以通过为集合名称指定*并在dataSources.collection字段中指定collectionName()函数,从文件路径动态生成集合名称。 默认Atlas Data Federation最多创建100通配符collection。您可以使用databases.[n].maxWildcardCollections参数自定义 Atlas Data Federation 自动生成的通配符collection的最大数量。 请注意,每个通配符collection只能包含一个dataSource

必需
dataSources
对象

对象数组,其中每个对象代表在stores数组中要与collection映射的联合数据库实例存储。

必需
dataSources.storeName
字符串

要映射到collection的联合数据库实例存储的名称。该值必须与stores数组中的stores.[n].name匹配。

必需
dataSources.path
字符串
文件和文件夹的路径。 指定/以捕获prefix路径中的所有文件和文件夹。 有关详细信息,请参阅为 S 3数据定义路径
必需
dataSources.defaultFormat
字符串

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

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

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

Optional
dataSources.omitAttributes
布尔

标志,指定是否省略Atlas Data Federation添加到集合中的属性(键和值对)。 您可以指定以下值之一:

  • false - 要添加属性

  • true - 省略这些属性

如果省略,则默认为 false,Atlas Data Federation 会添加属性。

Optional
Parameter
类型
说明
必要性
<collection-name>|*
字符串

Data Federation将联合数据库实例存储中包含的数据映射到的collection的名称,或者是通配符"*"以动态创建collection。

您可以通过为集合名称指定*并在dataSources.collection字段中指定collectionName()函数,从文件路径动态生成集合名称。 默认Atlas Data Federation最多创建100通配符collection。您可以使用databases.[n].maxWildcardCollections参数自定义 Atlas Data Federation 自动生成的通配符collection的最大数量。 请注意,每个通配符collection只能包含一个dataSource

必需
dataSources
对象

对象数组,其中每个对象代表在stores数组中要与collection映射的联合数据库实例存储。

必需
dataSources.storeName
字符串

要映射到collection的联合数据库实例存储的名称。该值必须与stores数组中的stores.[n].name匹配。

必需
dataSources.path
字符串
文件和文件夹的路径。 指定/以捕获prefix路径中的所有文件和文件夹。 有关详细信息,请参阅为 S 3数据定义路径
必需
dataSources.defaultFormat
字符串

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

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

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

Optional
dataSources.omitAttributes
布尔

标志,指定是否省略Atlas Data Federation添加到集合中的属性(键和值对)。 您可以指定以下值之一:

  • false - 要添加属性

  • true - 省略这些属性

如果省略,则默认为 false,Atlas Data Federation 会添加属性。

Optional
Parameter
类型
说明
必要性
<collection-name>|*
字符串

Data Federation将联合数据库实例存储中包含的数据映射到的collection的名称,或者是通配符"*"以动态创建collection。

您可以通过指定*作为集合名称并省略dataSources.collection参数,动态生成集合名称。

对于动态生成的数据库,可以通过指定*作为集合名称并省略以下参数来生成通配符集合:

  • dataSources.collection

  • dataSources.database

对于通配符 ( * ) 集合,可以使用dataSources.collectionRegex参数生成名称与正则表达式模式匹配的集合。

必需
dataSources
对象

对象数组,其中每个对象代表在stores数组中要与collection映射的联合数据库实例存储。

必需
dataSources.storeName
字符串

要映射到collection的联合数据库实例存储的名称。该值必须与stores数组中的stores.[n].name匹配。

必需
dataSources.database
字符串
Atlas 集群中包含该集合的数据库的名称。 必须省略此参数才能为动态生成的数据库生成通配符 ( * ) 集合。
可选的
dataSources.collection
字符串
Atlas数据库中集合的名称。 要创建通配符 ( * )集合,必须省略此参数。
可选的
dataSources.collectionRegex
字符串

用于创建通配符 ( * )集合的正则表达式模式。 要学习;了解有关 regex 语法的更多信息,请参阅 Go编程语言。

要使用正则表达式模式作为通配符 ( * )集合名称,您不得指定dataSources.collection参数。

Optional
Parameter
类型
说明
必要性
<collection-name>
字符串
Atlas Data Federation将联合数据库实例存储中包含的数据映射到的集合的名称。 您无法通过指定*来动态生成集合名称。
必需
dataSources
对象

对象数组,其中每个对象代表在stores数组中要与collection映射的联合数据库实例存储。

必需
dataSources.storeName
字符串

要映射到collection的联合数据库实例存储的名称。该值必须与stores数组中的stores.[n].name匹配。

必需
dataSources.allowInsecure
布尔

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

  • true 允许不安全的HTTP方案

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

如果为 true,则 Atlas Data Federation:

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

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

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

如果省略,则默认值为 false

Optional
dataSources.urls
字符串大量或空大量
可公开访问的数据文件的URL 。 不能指定需要身份验证的URL 。 Atlas Data Federation会为每个URL创建一个分区。 如果为空或省略, Atlas Data Federation将使用dataSources.storeName参数中指定的存储中的URL
必需
dataSources.defaultFormat
字符串

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

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

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

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

Optional
Parameter
类型
说明
必要性
<collection-name>
字符串

Atlas Data Federation将联合数据库实例存储中包含的数据映射到的集合的名称。 要动态生成集合名称,必须执行以下操作:

  • <collection-name>字段的值设置为*

  • datasetPrefixtrimLevel字段提供值。

  • 省略datasetName字段。

必需
dataSources
对象

对象数组,其中每个对象代表在stores数组中要与collection映射的联合数据库实例存储。

仅当集合的所有dataSources映射到在线存档存储时,才能为通配符集合指定多个dataSources

必需
dataSources.storeName
字符串

要映射到collection的联合数据库实例存储的名称。该值必须与stores数组中的stores.[n].name匹配。

必需
datasetName
字符串

要与集合映射的在线存档数据集的名称。 在线存档datasetName采用以下格式:

<version>$<type>$<subtype>$<clusterName>$<dbName>$<collectionName>$<snapshotId>

您不能为通配符集合指定datasetName 。 如果指定datasetName ,则无法为非通配符集合指定datasetPrefix

可选的
datasetPrefix
字符串

仅对于通配符集合是必需的。 对于非通配符集合,可选项。

用于与在线存档数据集名称匹配的数据集名称前缀。

如果您为通配符集合指定此参数, Atlas Data Federation只会将集合映射到其前缀与您指定的datasetPrefix匹配的数据集名称。

如果您为非通配符集合指定此参数, Atlas Data Federation会将最新数据集(针对最近捕获的快照)映射到集合。 您必须省略datasetName才能为非通配符集合指定此参数。

可选的
maxDatasets
int

仅适用于通配符集合。

为数据源动态生成集合的最大数据集数。 值必须大于0 。 Atlas Data Federation按字母倒序返回数据集。

Optional
trimLevel
int

仅适用于通配符集合。

在将剩余字段映射到通配符集合名称之前从数据集名称左侧修剪的字符数。 值必须大于0 。 如果省略,则默认为0

只能为通配符设立进行此设置。

Optional
Parameter
类型
说明
必要性
<view-name>
字符串
视图的名称。 视图名称必须是唯一的。 它不能与集合名称或同一数据库中的任何其他视图名称相同。
必需
viewOn
字符串
在其上创建视图的源集合的名称。
必需
pipeline
阶段大量

用于创建视图的聚合管道阶段的大量。

视图定义管道不能包含$out$merge阶段,即使在$lookup$facet 等嵌套管道阶段内也是如此。

必需
Parameter
类型
说明
必要性
<view-name>
字符串
视图的名称。 视图名称必须是唯一的。 它不能与集合名称或同一数据库中的任何其他视图名称相同。
必需
pipeline
阶段大量
应用集合的聚合管道阶段。 对于SQL视图, pipeline必须以在SQL声明中指定源集合的$sql阶段开始。
必需

如果成功,该命令将返回以下输出。 您可以通过运行验证集合中的命令来验证结果。 如果失败,请参阅下面的“故障排除”以获取建议的解决方案。

{ ok: 1 }

以下示例使用具有以下设置的Amazon Web Services S3存储上的示例airbnb 数据:

商店名称
egS3Store
区域
us-east-2
桶模式
test-data-federation
Prefix
json
分隔符
/
示例数据集
airbnb

以下示例使用具有以下设置的Azure Blob 存储容器上的示例airbnb数据:

商店名称
egAzureStore
Prefix
sample
分隔符
/
示例数据集
airbnb

以下示例使用具有以下设置的Googleairbnb Google Cloud PlatformCloud Platform存储上的示例 数据:

商店名称
egGCStore
区域
us-central1
桶模式
test-data-federation
Prefix
json
分隔符
/
示例数据集
airbnb

以下示例使用Atlas 集群上示例数据集中sample_airbnb.listingsAndReviews集合,并进行了以下设置:

商店名称
egAtlasStore
示例数据集
sample_airbnb.listingsAndReviews

查看“将样本数据加载到Atlas集群”以将示例数据集加载到Atlas 集群。

以下示例使用以下URL

  • https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json

  • https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json

以下示例使用具有以下设置的在线存档:

商店名称
adlStore
在线存档名称
v1$atlas$archive$testCluster$sample_airbnb$219eb1cb-20a6-4ce3-800a-aaefd6c227c6$66d512939b1fa57fe057aa22

以下命令在存储配置的数据库中创建名为airbnb sampleDB的collection。

airbnb集合映射到名为egS3StoreS 3存储中json文件夹中的airbnb示例数据集。

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egS3Store", "path" : "/json/airbnb", "defaultFormat" : ".json" }]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "airbnb",
"dataSources" : [{
"storeName" : "egS3Store",
"path" : "/json/airbnb",
"defaultFormat" : ".json"
}]
}]
}]
}
}

airbnb集合映射到名为egAzureStoreAzure存储中sample文件夹中的airbnb示例数据集。

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egAzureStore", "path" : "/sample/airbnb", "defaultFormat" : ".json" }]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb

集合映射到名为 的Google Cloud airbnbPlatform存储中airbnb json文件夹中的Google Cloud PlatformegGCStore 示例数据集。

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egGCStore", "path" : "/json/airbnb", "defaultFormat" : ".json" }]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egGCStore",
"provider" : "gcs",
"region" : "us-central1",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "airbnb",
"dataSources" : [{
"storeName" : "egGCStore",
"path" : "/json/airbnb",
"defaultFormat" : ".json"
}]
}]
}]
}
}

airbnb集合映射到Atlas集群上sample_airbnb数据库中的listingsAndReviews示例集合。

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egAtlasStore", "database" : "sample_airbnb", "collection" : "listingsAndReviews" }]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "airbnb",
"dataSources" : [{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb",
"collection" : "listingsAndReview"
}]
}]
}]
}
}

airbnb集合包括集合中每个URL的分区。 allowInsecure标志未设立,默认为false

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "http-store", "urls": ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json","https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json"], "defaultFormat" : ".json" }]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "http-store",
"provider" : "http",
"urls" : [
"https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json",
"https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json"
],
"defaultFormat" : ".json"
}
],
"databases" : [
{
"name" : "sampleDb",
"collections" : [
{
"name" : "airbnb",
"dataSources" : [
{
"storeName" : "http-store",
"defaultFormat" : ".json",
"urls" : [
"https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json",
"https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json"
]
}
]
}
]
}
]
}
}

airbnb集合映射到sample_airbnb.listingsAndReviews管道中的在线存档数据集。

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "adlStore", "datasetName" : "v1$atlas$snapshot$testCluster$sample_airbnb$listingsAndReviews" }]})
{ "ok" : 1 }

这些示例展示了如何使用create命令指定通配符"*"

以下示例使用create命令动态创建collection。

以下示例使用create命令为egS3Store联合数据库实例存储中路径/json/中的文件动态创建collection。它使用collectionName()函数以指定路径中的文件名来命名集合。

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egS3Store", "path": "/json/{collectionName()}"}]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "*",
"dataSources" : [{
"storeName" : "egS3Store",
"path" : "/json/{collectionName()}"
}]
}]
}]
}
}

以下示例使用create命令创建名为egCollection的集合,该集合映射到名为egS3Store的Atlas Data Federation存储。 在名为 egS3Store的文件夹中包含示例数据集airbnbjson

use sampleDB
db.runCommand({ "create" : "egCollection", "dataSources" : [{ "storeName" : "egS3Store", "path": "/json/*"}]}})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
egCollection
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sample",
"collections" : [{
"name" : "egCollection",
"dataSources" : [{
"storeName" : "egS3Store",
"path" : "/json/*"
}]
}]
}]
}
}

以下示例展示如何使用create命令指定通配符"*"

以下示例使用create命令为egAzureStore联合数据库实例存储中路径/sample/中的文件动态创建collection。它使用collectionName()函数以指定路径中的文件名来命名集合。

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAzureStore", "path": "/json/{collectionName()}"}]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb

以下示例使用create命令创建名为egCollection的集合,该集合映射到名为egAzureStore的Atlas Data Federation存储。 在名为 egAzureStore的文件夹中包含示例数据集airbnbsample

use sampleDB
db.runCommand({ "create" : "egCollection", "dataSources" : [{ "storeName" : "egAzureStore", "path": "/sample/*"}]}})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
egCollection

这些示例展示了如何使用create命令指定通配符"*"

以下示例使用create命令动态创建collection。

以下示例使用create命令为egGCStore联合数据库实例存储中路径/json/中的文件动态创建collection。它使用collectionName()函数以指定路径中的文件名来命名集合。

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egGCStore", "path": "/json/{collectionName()}"}]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
airbnb
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egGCStore",
"provider" : "gcs",
"region" : "us-central1",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "*",
"dataSources" : [{
"storeName" : "egGCStore",
"path" : "/json/{collectionName()}"
}]
}]
}]
}
}

以下示例使用create命令创建名为egCollection的集合,该集合映射到名为egGCStore的Atlas Data Federation存储。 在名为 egS3Store的文件夹中包含示例数据集airbnbjson

use sampleDB
db.runCommand({ "create" : "egCollection", "dataSources" : [{ "storeName" : "egGCStore", "path": "/json/*"}]}})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
egCollection
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egGCStore",
"provider" : "gcs",
"region" : "us-central1",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sample",
"collections" : [{
"name" : "egCollection",
"dataSources" : [{
"storeName" : "egGCStore",
"path" : "/json/*"
}]
}]
}]
}
}

这些示例展示了如何使用create命令指定通配符"*"

以下示例使用create命令为 Atlas 集群名称myTestCluster上的sample_airbnb数据库中的文档动态创建集合。

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAtlasStore", "database": "sample_airbnb"}]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

db.runCommand({storageGetConfig:1})
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "*",
"dataSources" : [{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb"
}]
}]
}]
}
}
show collections
listingsAndReviews

以下示例使用create命令动态创建集合,其名称与名为myTestCluster的Atlas 集群上的sample_airbnb数据库中的指定正则表达式模式匹配。

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAtlasStore", "database": "sample_airbnb", "collectionRegex" : "^list" }]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

db.runCommand({storageGetConfig:1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}
],
"databases" : [
{
"name" : "sbxDb",
"collections" : [
{
"name" : "*",
"dataSources" : [
{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb",
"collectionRegex" : "^list"
}
]
}
]
}
]
}
}
show collections
listingsAndReviews

以下示例使用create命令为动态创建的数据库动态创建集合。

use *
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAtlasStore" }]})
{ "ok" : 1 }

以下命令显示集合已成功创建:

db.runCommand({storageGetConfig:1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}
],
"databases" : [
{
"name" : "*",
"collections" : [
{
"name" : "*",
"dataSources" : [
{
"storeName" : "egAtlasStore"
}
]
}
]
}
]
}
}

此数据存储不支持通配符"*"集合。

以下示例使用create命令动态创建名称与在线存档的指定前缀名称匹配的集合。

use sample
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "adlStore", "datasetPrefix": "v1$atlas$snapshot$testCluster$sample_airbnb$listingsAndReviews", "trimLevel": 4 }]})
{ ok: 1 }

以下命令显示集合已成功创建:

show collections
sample_airbnb_listingsAndReviews_20220602T124437Z
sample_airbnb_listingsAndReviews_20220603T124603Z
sample_airbnb_listingsAndReviews_20220604T124420Z
sample_airbnb_listingsAndReviews_20220605T124454Z
sample_airbnb_listingsAndReviews_20220606T124419Z
sample_airbnb_listingsAndReviews_20220607T124515Z

egCollectionsampleDB以下命令在存储配置的数据库中创建名为collection的集合。egCollection collection 映射到以下示例数据集:

  • airbnb 数据集位于S 3存储的json文件夹中,名为egS3Store

  • airbnb Atlas 集群上名为myTestClustersample_airbnb.listingsAndReviews集合中的数据集

  • airbnb URL https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json中的数据集

警告

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

use sampleDB
db.runCommand({ "create" : "egCollection", "dataSources" : [{ "storeName" : "egS3Store", "path" : "/json/airbnb" },{ "storeName" : "egAtlasStore", "database": "sample_airbnb", "collection": "listingsAndReviews" },{"storeName" : "egHttpStore", "urls": ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json"]}]})
{ "ok" : 1 }

以下命令显示collection已成功创建:

show collections
egCollection
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
},
{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
},
{
"name" : "egHttpStore",
"provider" : "http",
"urls" : ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json"]
}
],
"databases" : [
{
"name" : "sampleDB",
"collections" : [{
"name" : "egCollection",
"dataSources" : [
{
"storeName" : "egS3Store",
"path" : "json/airbnb"
},
{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb",
"collection" : "listingsAndReviews"
},
{
"storeName" : "egHttpStore",
"urls" : ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json"]
}
]
}]
}
]
}
}

以下命令在sample数据库中的airbnb集合上创建名为listings的视图,并包含nameproperty_type字段:

use sampleDB
db.runCommand({ "create" : "listings", "viewOn" : "airbnb", "pipeline" : [{$project: {"property_type":1, "name": 1}}] })
{ "ok" : 1 }
use sampleDB
db.runCommand({ "create" : "listings", "pipeline": [{$sql: {statement: "SELECT property_type, name FROM airbnb"} }] })
{ "ok" : 1 }

listCollectionsstorageGetConfig命令返回以下输出:

db.runCommand({"listCollections":1})
{
"ok" : 1,
"cursor" : {
"firstBatch" : [
{
"name" : "airbnb",
"type" : "collection",
"info" : {
"readOnly" : true
}
},
{
"name" : "listings",
"type" : "view",
"info" : {
"readOnly" : true
}
}
],
"id" : NumberLong(0),
"ns" : "egS3Store.$cmd.listCollections"
}
}
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/"
}
],
"databases" : [
{
"name" : "sample",
"collections" : [
{
"name" : "airbnb",
"dataSources" : [
{
"storeName" : "egS3Store",
"path" : "json/airbnb/*"
}
]
},
{
"name" : "*",
"dataSources" : [
{
"storeName" : "egS3Store",
"path" : "json/{collectionName()}"
}
]
}
],
"views" : [
{
"name" : "listings",
"source" : "airbnb",
"pipeline" : "[{\"$project\":{\"property_type\":{\"$numberInt\":\"1\"},\"name{\"$numberInt\":\"1\"}}}]"
}
]
}
]
}
}

您可以通过运行以下任一命令来验证该命令是否已成功创建collection或视图:

show collections
db.runCommand({ "storageGetConfig" : 1 })
db.runCommand({ "listCollections" : 1 })

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

商店名称不存在

{
"ok" : 0,
"errmsg" : "store name does not exist",
"code" : 9,
"codeName" : "FailedToParse"
}

解决方案:确保指定的storeNamestores数组中的商店名称匹配。 您可以运行listStores命令来检索联合数据库实例存储配置中的存储列表。

collection名称已存在

{
"ok" : 0,
"errmsg" : "collection name already exists in the database",
"code" : 9,
"codeName" : "FailedToParse"
}

解决方案:确保集合name是唯一的。 您可以运行show collections命令来检索现有集合的列表。

如果该命令失败,则会返回以下错误:

视图名称已存在

{
"ok" : 0,
"errmsg" : "a view '<database>.<view>' already exists, correlationID = <1603aaffdbc91ba93de6364a>",
"code" : 48,
"codeName" : "NamespaceExists"
}

解决方案:确保视图名称是唯一的。 您可以运行listCollections命令来检索集合上现有视图的列表。

后退

列出存储