MongoDBv3

3.0 新版功能.

司机简称

MongoDBv3

生成依赖项

Mongo CXX>=3.4.0客户端库

此驱动程序可以连接到a MongoDB服务。

驱动程序支持文档/功能和集合/层的读取、创建、更新和删除操作。MongoDB数据库必须存在,然后才能使用OGR对其进行操作。

这个驱动程序需要MangGDB C++ V3.4.0客户端库。

驱动程序功能

Supports Create()

This driver supports the GDALDriver::Create() operation

Supports Georeferencing

This driver supports georeferencing

Supports VirtualIO

This driver supports virtual I/O operations (/vsimem/, etc.)

MongoDB与OGR概念

数据库中的MongoDB集合被视为OGR层。MongoDB文档被视为OGR特性。

数据集名称语法

有两种可能的语法:

  • 一次使用 MongoDB URI 前缀 MONGODBV3: ,例如MONGODBV3:mongodb:// [usr:pwd公司@] 主机1 [:端口1] … [,主机号[:端口号] ] ] [/[db] [?选项] ]

  • 一个只使用MongoDBv3:作为名称和打开选项来指定主机、端口、用户、密码、数据库等。。。

Note: the MONGODBV3: prefix before a URI starting with mongodb:// is required to make it recognize by this driver, instead of the legacy driver. If the URI is starting with mongodb+srv://, then it is not needed.

可用的打开选项有:

  • URI =uri: Connection URI

  • HOST =主机名:服务器主机名。默认为本地主机。

  • PORT =端口。服务器端口。默认值为27017。

  • DBNAME =数据库名称。数据库名称。应在连接到启用了用户身份验证的主机时指定。

  • USER =姓名。用户名。

  • PASSWORD =密码。用户密码。

  • SSL_PEM_KEY_FILE =文件名。SSL PEM证书/密钥文件名。

  • SSL_PEM_KEY_PASSWORD =密码。SSL PEM密钥密码。

  • SSL_CA_FILE =文件名。SSL证书颁发机构文件名。

  • SSL_CRL_FILE =文件名。SSL证书吊销列表文件名。

  • SSL_ALLOW_INVALID_CERTIFICATES =是/否。是否允许连接到证书无效的服务器。默认为否。

  • BATCH_SIZE =数字。每批要检索的功能数。对于大多数查询,第一批返回101个文档,或者只返回足够超过1兆字节的文档。后续批处理大小为4兆字节。

  • FEATURE_COUNT_TO_ESTABLISH_FEATURE_DEFN =数字。要检索以建立特征定义的特征数。-1=无限制。默认为100。

  • JSON_FIELD =是/否。是否将名为“_json”的字段作为json包含在完整文档中。默认为否。

  • FLATTEN_NESTED_ATTRIBUTE =是/否。是否递归地探索嵌套对象并生成扁平OGR属性。默认为“是”。

  • FID =姓名。要用作FID的带整数值的字段名。默认为ogc_fid。

  • USE_OGR_METADATA =是/否。是否使用u ogru元数据集合读取层元数据。默认为“是”。

  • BULK_INSERT =是/否。是否使用批量插入创建特征。默认为“是”。

过滤

当“2d”或“2dsphere”空间索引在geometry字段上可用时,驱动程序将使用set spatial filter()将任何空间过滤器集转发到服务器。

但是,在当前状态下,使用SetAttributeFilter()设置的SQL属性筛选器仅在客户端求值。要启用服务器端筛选,传递给SetAttributeFilter()的字符串必须是 MongoDB filter syntax .

分页

从服务器上检索的功能由101个文档块或刚好足够超过1兆字节的文档块组成。后续批处理大小为4兆字节。这可以通过“批量打开”选项进行更改。

图式

在读取MongoDB集合时,OGR必须建立属性和几何字段的模式,因为与没有模式的MongoDB集合相反,OGR有一个固定的模式概念。

在一般情况下,OGR将读取集合的前100个文档(可以使用FEATURE_COUNT_TO_ESTABLISH_FEATURE_DEFN open选项进行更改),并构建最适合找到的字段和值的架构。

如果集合/层以前是用OGR创建的,那么一个OGR元数据特殊集合包含OGR模式,在这种情况下,它将被直接使用。通过设置USE ogr_metadata=NO open选项,可以忽略用u ogr_元数据编写的架构。

还可以设置JSON_FIELD=YES open选项,以便在OGR模式中添加一个_JSON特殊字段。当将MongoDB文档作为OGR特性读取时,文档的完整JSon版本将存储在ùJSon字段中。对于复杂文档或在OGR数据类型中转换不好的数据类型,这可能很有用。在创建/更新文档时,如果存在并设置了\u json字段,则将直接使用其内容(其他字段将被忽略)。

功能ID

MongoDB有一个特殊的id字段,它包含文档的唯一id。此字段作为OGR字段返回,但不能用作OGR special FeatureID字段,该字段必须为整数类型。默认情况下,OGR将尝试读取潜在的“ogc_fid”字段以设置OGR FeatureID。可以使用FID open选项设置要查找的此字段的名称。如果找不到该字段,OGR返回的FID将是从1开始的序列号,但根本不能保证它是稳定的。

ExecuteSQL()接口

如果将“MongoDB”指定为ExecuteSQL()的方言,则将 MongoDB command 可以通过。结果将在单个OGR特性中作为JSon字符串返回。

标准的SQL请求将在客户端执行。

写入支持

可以创建和删除图层/集合。

只有在更新模式下打开数据源时才启用写支持。

使用CreateFeature()插入新功能时,如果命令成功,OGR将获取返回的\u id并将其用于SetFeature()操作。

图层创建选项

支持以下图层创建选项:

  • OVERWRITE =是/否。是否用要创建的图层名覆盖现有集合。默认为否。

  • GEOMETRY_NAME =姓名。几何列的名称。默认为“几何体”。

  • SPATIAL_INDEX =是/否。是否创建空间索引(2dsphere)。默认为“是”。

  • FID =字符串。要用作FID的带整数值的字段名。默认为“ogc_fid”

  • WRITE_OGR_METADATA =是/否。是否在u ogr u元数据集合中创建层字段的说明。默认为“是”。

  • DOT_AS_NESTED_FIELD =是/否。是否将字段名中的点字符视为子文档。默认为“是”。

  • IGNORE_SOURCE_ID =是/否。是否忽略传递给CreateFeature()的功能中的“id”字段。默认为否。

实例

列出MongoDB数据库的表:

ogrinfo -ro mongodb+srv://user:password@cluster0-ox9uy.mongodb.net/test

在MongoDB字段上筛选:

ogrinfo -ro mongodb+srv://user:password@cluster0-ox9uy.mongodb.net/test -where '{ "field": 5 }'

从形状文件创建和填充集合:

ogr2ogr -update mongodb+srv://user:password@cluster0-ox9uy.mongodb.net/test shapefile.shp

生成说明

必须针对 MongoDB C++ driver client library ,v3.4.0,以便编译MongoDBv3驱动程序。

你必须先跟上 MongoDB C++ driver client build instructions .

然后:

  • 在Linux/Unix上,运行./configure--with-mongocxxv3(可能是通过重写PKG CONFIG路径来指向{INSTALLATION}/lib/pkgconfig的前缀

  • 在Windows上,在nmake.opt(或加载项nmake.local)中取消注释并调整以下内容:

    # Uncomment for MongoDBv3 support
    # Uncomment following line if plugin is preferred
    #MONGODBV3_PLUGIN = YES
    BOOST_INC=E:/boost_1_69_0
    MONGOCXXV3_CFLAGS = -IE:/dev/install-mongocxx-3.4.0/include/mongocxx/v_noabi -IE:/dev/install-mongocxx-3.4.0/include/bsoncxx/v_noabi
    MONGOCXXV3_LIBS = E:/dev/install-mongocxx-3.4.0/lib/mongocxx.lib E:/dev/install-mongocxx-3.4.0/lib/bsoncxx.lib
    

也见