MongoDB提取指定的切片集

    xiaoxiao2021-12-15  29

    **作者:刘大

    大家可能都知道如何将MongoDB数据库的数据进行整体的迁移,不清楚也没关系,可以在iServer的联机帮助的“开始-iServer配置与管理-iServer缓存机制-使用分布式切图服务-切片集的分发”就会有详细的说明,里面还介绍了将切片集导出SMTiles 格式文件,便于移动端离线地图的使用,这里就不重复述说了。不过,在实际的项目开发上,我们可能只是想要将数据库内的某一张地图即一个切片集拷贝分发到其他的MongoDB服务器上,这时我们就需要使用MongoDB命令来复制相应的表,或者进行数据的导入导出。 ###一.相关概念 初次接触mongodb数据库的时候,对于mongodb的实例,数据库,集合,文档等概念可能不太理解,下面我们就用一张表格来展示一下: 下面以iserver所切的mongodb切片的实例来看看数据库的存储结构 不难看出图表中的“1”是实例;“2”是数据库;“3”是集合或者数据库表;“4”是文档即一条记录。 上面的图,我们也可以知道iserver所切的mongodb切片是有meatadatas,images,tiles这3个表组成,"_"后面的一串数字是与meatadatas表的记录的tilesetName相对应的, 了解相关的概念,我们就开始着手数据提取 ###二.复制表(cloneCollection) db.cloneCollection是指复制远程数据库的数据表到本地,db则是指当前数据库,在使用复制表命令,我们需要注意: 1.本地服务器和远程服务器需能够连通; 2.在复制之前,需要在本地数据库上建立与被复制表所在的数据库名字一样的数据库; 首先,我们来看看cloneCollection有哪些参数: 写法:db.cloneCollection(from,collection,filter) 接下来,我们就以实际的操作来展示命令的使用吧! 从上图看,我们已经在本地服务器90里新建了一个和89同名的smtiles数据库,首先我们在mongodb的bin目录下打开cmd,如图: 最后,我们一样的,把“1116742863”对应的images和tiles表复制即可, 这样,我们就提取了长春市区地图的MongoDB切片,iServer连接数据库,进行发布缓存了。

    ###三.导入导出 复制表的命令,能够快速将数据转移到本地数据库,但是它有一定的局限性: 1.没办法从本地复制本地; 2.数据库必须同名 所以,我们接下来介绍下导入导出命令。可以解决这两个问题 导出导入工具存放在mongodb的bin目录下 想要查看这两个操作都有哪些参数,可通过输入mongoexport.exe/mongoimport.exe --help查看 ####3.1导出(mongoexport) MongoDB导出工具可以把一个collection导出成json格式,csv格式或tsv格式的文件。先来看看有哪些主要的参数 一切文字的说明都抵不过实际的操作,我们就来操作一下 这样我们就已经将id为“-1137121821”的切片集导入到本地实例的bin路径下了 这里提醒大家一下,在windows里进行-q 查询条件的设置是,应注意双引号以及单引号的使用,大括号外必须使用**“”**。 ####3.2导入(mongoimport) 上面我们已经导出了我们所需要的数据,现在就开始将数据导入需要发布切片服务的MongoDB里吧 导入数据的参数和导出相差不多(导入数据的时候,不使用-o指定路径 直接写路径地址即可),导入数据支持json和csv格式,不进行设置,默认为json格式。 同样,直接上例子 现在我就完成了指定切片集导入了。

    转载请注明原文地址: https://ju.6miu.com/read-1000355.html

    最新回复(0)