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的名称,或者是通配符 您可以通过为集合名称指定 | 必需 |
dataSources | 对象 | 对象数组,其中每个对象代表在 | 必需 |
dataSources.storeName | 字符串 | 要映射到collection的联合数据库实例存储的名称。该值必须与 | 必需 |
dataSources.path | 字符串 | 必需 | |
dataSources.defaultFormat | 字符串 | Data Federation 在查询联合数据库实例存储时遇到不带扩展名的文件时默认采用的格式。 以下值是有效的:
如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。 | Optional |
dataSources.omitAttributes | 布尔 | 标志,指定是否省略Atlas Data Federation添加到集合中的属性(键和值对)。 您可以指定以下值之一:
如果省略,则默认为 | Optional |
Parameter | 类型 | 说明 | 必要性 |
---|---|---|---|
<collection-name>|* | 字符串 | Data Federation将联合数据库实例存储中包含的数据映射到的collection的名称,或者是通配符 您可以通过为集合名称指定 | 必需 |
dataSources | 对象 | 对象数组,其中每个对象代表在 | 必需 |
dataSources.storeName | 字符串 | 要映射到collection的联合数据库实例存储的名称。该值必须与 | 必需 |
dataSources.path | 字符串 | 必需 | |
dataSources.defaultFormat | 字符串 | Data Federation 在查询联合数据库实例存储时遇到不带扩展名的文件时默认采用的格式。 以下值是有效的:
如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。 | Optional |
dataSources.omitAttributes | 布尔 | 标志,指定是否省略Atlas Data Federation添加到集合中的属性(键和值对)。 您可以指定以下值之一:
如果省略,则默认为 | Optional |
Parameter | 类型 | 说明 | 必要性 |
---|---|---|---|
<collection-name>|* | 字符串 | Data Federation将联合数据库实例存储中包含的数据映射到的collection的名称,或者是通配符 您可以通过为集合名称指定 | 必需 |
dataSources | 对象 | 对象数组,其中每个对象代表在 | 必需 |
dataSources.storeName | 字符串 | 要映射到collection的联合数据库实例存储的名称。该值必须与 | 必需 |
dataSources.path | 字符串 | 必需 | |
dataSources.defaultFormat | 字符串 | Data Federation 在查询联合数据库实例存储时遇到不带扩展名的文件时默认采用的格式。 以下值是有效的:
如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。 | Optional |
dataSources.omitAttributes | 布尔 | 标志,指定是否省略Atlas Data Federation添加到集合中的属性(键和值对)。 您可以指定以下值之一:
如果省略,则默认为 | Optional |
Parameter | 类型 | 说明 | 必要性 |
---|---|---|---|
<collection-name>|* | 字符串 | Data Federation将联合数据库实例存储中包含的数据映射到的collection的名称,或者是通配符 您可以通过指定 对于动态生成的数据库,可以通过指定
对于通配符 ( | 必需 |
dataSources | 对象 | 对象数组,其中每个对象代表在 | 必需 |
dataSources.storeName | 字符串 | 要映射到collection的联合数据库实例存储的名称。该值必须与 | 必需 |
dataSources.database | 字符串 | Atlas 集群中包含该集合的数据库的名称。 必须省略此参数才能为动态生成的数据库生成通配符 ( * ) 集合。 | 可选的 |
dataSources.collection | 字符串 | Atlas数据库中集合的名称。 要创建通配符 ( * )集合,必须省略此参数。 | 可选的 |
dataSources.collectionRegex | 字符串 | 用于创建通配符 ( 要使用正则表达式模式作为通配符 ( | Optional |
Parameter | 类型 | 说明 | 必要性 |
---|---|---|---|
<collection-name> | 字符串 | Atlas Data Federation将联合数据库实例存储中包含的数据映射到的集合的名称。 您无法通过指定 * 来动态生成集合名称。 | 必需 |
dataSources | 对象 | 对象数组,其中每个对象代表在 | 必需 |
dataSources.storeName | 字符串 | 要映射到collection的联合数据库实例存储的名称。该值必须与 | 必需 |
dataSources.allowInsecure | 布尔 | 验证指定URL中的模式。 值可以是以下之一:
如果为 true,则 Atlas Data Federation:
警告:如果将其设立为 如果省略,则默认值为 | Optional |
dataSources.urls | 字符串大量或空大量 | 可公开访问的数据文件的URL 。 不能指定需要身份验证的URL 。 Atlas Data Federation会为每个URL创建一个分区。 如果为空或省略, Atlas Data Federation将使用 dataSources.storeName 参数中指定的存储中的URL 。 | 必需 |
dataSources.defaultFormat | 字符串 | Data Federation 在查询联合数据库实例存储时遇到不带扩展名的文件时默认采用的格式。 以下值是有效的:
如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。 如果包含,则指定的格式仅适用于 | Optional |
Parameter | 类型 | 说明 | 必要性 | |
---|---|---|---|---|
<collection-name> | 字符串 | Atlas Data Federation将联合数据库实例存储中包含的数据映射到的集合的名称。 要动态生成集合名称,必须执行以下操作:
| 必需 | |
dataSources | 对象 | 对象数组,其中每个对象代表在 仅当集合的所有 | 必需 | |
dataSources.storeName | 字符串 | 要映射到collection的联合数据库实例存储的名称。该值必须与 | 必需 | |
datasetName | 字符串 | 要与集合映射的在线存档数据集的名称。 在线存档
您不能为通配符集合指定 | 可选的 | |
datasetPrefix | 字符串 | 仅对于通配符集合是必需的。 对于非通配符集合,可选项。 用于与在线存档数据集名称匹配的数据集名称前缀。 如果您为通配符集合指定此参数, Atlas Data Federation只会将集合映射到其前缀与您指定的 如果您为非通配符集合指定此参数, Atlas Data Federation会将最新数据集(针对最近捕获的快照)映射到集合。 您必须省略 | 可选的 | |
maxDatasets | int | 仅适用于通配符集合。 为数据源动态生成集合的最大数据集数。 值必须大于 | Optional | |
trimLevel | int | 仅适用于通配符集合。 在将剩余字段映射到通配符集合名称之前从数据集名称左侧修剪的字符数。 值必须大于 只能为通配符设立进行此设置。 | Optional |
输出
如果成功,该命令将返回以下输出。 您可以通过运行验证集合中的命令来验证结果。 如果失败,请参阅下面的“故障排除”以获取建议的解决方案。
{ 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
集合映射到名为egS3Store
的S 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
集合映射到名为egAzureStore
的Azure存储中sample
文件夹中的airbnb
示例数据集。
use sampleDB db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egAzureStore", "path" : "/sample/airbnb", "defaultFormat" : ".json" }]})
{ "ok" : 1 }
以下命令显示collection已成功创建:
show collections
airbnb
集合映射到名为 的Google Cloud airbnb
Platform存储中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
的文件夹中包含示例数据集airbnb
json
。
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
的文件夹中包含示例数据集airbnb
sample
。
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
的文件夹中包含示例数据集airbnb
json
。
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
多数据源示例
egCollection
sampleDB
以下命令在存储配置的数据库中创建名为collection的集合。egCollection
collection 映射到以下示例数据集:
airbnb
数据集位于S 3存储的json
文件夹中,名为egS3Store
airbnb
Atlas 集群上名为myTestCluster
的sample_airbnb.listingsAndReviews
集合中的数据集airbnb
URLhttps://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
的视图,并包含name
和property_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 }
listCollections
和storageGetConfig
命令返回以下输出:
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" }
解决方案:确保指定的storeName
与stores
数组中的商店名称匹配。 您可以运行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
命令来检索集合上现有视图的列表。