内容简介:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyw/article/details/88336631
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyw/article/details/88336631
作为一个专业文档型数据库,MongoDB有一个很大的优势,就是使用JavaScript使用、管理数据库,所以也能够使用JavaScript脚本进行复杂的管理,就像Oracle中使用自定义函数、存储过程一样使用、管理数据库。
mongodb 的 shell 是javascript实现的,如果直接使用javascript实现相应的功能则显得很直观和简便。运行JavaScript脚本有四种[1]方式:
(1) 交互式 mongo shell
大部分的 mongodb 教程,在第一章都会讲解这种方式。
mongo 127.0.0.1:27017 use test db.users.findOne()
(2) mongo --eval 运行一段脚本
不进入交互模式,直接在 OS 的命令行下运行一段mongodb脚本。
mongo 127.0.0.1:27017/test --eval "printjson(db.users.findOne())"
(3) 在OS命令行下,运行一个js文件
mongo 127.0.0.1:27017/test userfindone.js
userfindone.js 的内容:
printjson(db.users.findOne());
(4) 在mongo shell 交互模式下,运行一个js文件
mongo test load("/root/mongojs/userfindone.js")
其中,load() 参数中的文件路径,既可以是相对路径,也可以是绝对路径。
本文采用第3种方案,直接中windows OS环境下,在cmd中运行命令。
1. 如何将mongo查询结果导出到文件中
(1)新建一个js文件,将查询方法写进去,如query1201.js,文件内容如下
var c = db.getCollection('DJXX_WLW_SJKZ').find({jh:{"$in":["X1-001","X1-002","X1-005","X2-002","X3-005"]},cjsj:{"$ne":"N/A"},dataCode:200},{jh:1,sgtsj:1,dltsj:1,cjsj:1}).sort({cjsj:-1}) while(c.hasNext()) { printjson(c.next()); }
(2)输入OS Shell命令来执行
mongo mongodb://192.168.*.**:27017/xxxx --username XXXX --password **** query1201.js >result1201.json
这样查询的结果就会直接生成在当前文件夹下的result1201.js文件中
2. 将JSON格式文本文件输入导入到数据库中
启动windows环境下的MongoDB数据库[2]。
D:\mongodb\bin>mongod -config d:\mongodb\conf\mongod.cfg 2019-03-08T21:04:07.460+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none' 2019-03-08T21:04:07.464+0800 I CONTROL [main] log file "D:\mongodb\log\mongodb.log" exists; moved to "D:\mongodb\log\mongodb.log.2019-03-08T13-04-07".
使用Mongo客户端,新创建Collection为
D:\mongodb\bin>mongo MongoDB shell version v4.0.0 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 4.0.0 Welcome to the MongoDB shell. ...... MongoDB Enterprise > show dbs admin 0.000GB config 0.000GB local 0.000GB mytest 0.180GB MongoDB Enterprise > use mytest switched to db mytest MongoDB Enterprise > db.createCollection("DJXX_WLW_SJKZ")
使用mongoimport命令从文件中,导入数据。
D:\mongodb\bin>mongoimport/bypassDocumentValidation --db mytest --collection DJXX_WLW_SJKZ --file G:\result1201a.json 2019-03-09T19:36:22.365+0800 connected to: localhost 2019-03-09T19:36:24.349+0800 [........................] mytest.DJXX_WLW_SJKZ 23.3MB/3.67GB (0.6%) 2019-03-09T19:36:30.345+0800 [........................] mytest.DJXX_WLW_SJKZ 114MB/3.67GB (3.0%) 3.66GB/3.67GB (99.7%) 2019-03-09T19:37:18.345+0800 [#####...................] mytest.DJXX_WLW_SJKZ 824MB/3.67GB (21.9%) ...... 2019-03-09T19:40:31.082+0800 [########################] mytest.DJXX_WLW_SJKZ 3.67GB/3.67GB (100.0%) 2019-03-09T19:40:31.082+0800 imported 785788 documents
3. 导入数据过程中,所遇到的问题
导入数据过程中,所遇到的问题是导出JSON文件格式问题,提示错误如下:
D:\mongodb\bin>mongoimport/bypassDocumentValidation --db mytest --collection DJXX_WLW_SJKZ --file G:\result1201.json 2019-03-09T22:35:33.685+0800 connected to: localhost 2019-03-09T22:35:33.739+0800 Failed: error processing document #1: invalid character 'o' in literal MaxKey or MinKey (expecting 'a' or 'i') 2019-03-09T22:35:33.740+0800 imported 0 documents
打开JSON数据文件,发现多出4行开头文本描述,内容如下(什么原因,没有深入研究):
<class 'str'> MongoDB shell version v4.0.0 <class 'str'> connecting to: mongodb://192.168.*.***:27017/xxxx <class 'str'> MongoDB server version: 3.4.14 <class 'str'> WARNING: shell and server versions do not match
由于JSON数据文件达到3.6G,一般编辑器打不开,为此使用 Python 编段小程序查看,并删除此四行文本内容。
参考:
[1]《mongodb shell 运行js脚本的四种方式》 CSDN博客 wershest 2017.06
[2]《Python开发中使用Mongo DB入门实践》 CSDN博客 肖永威 2018.07
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Phoenix 数据导入与导出
- Angular Excel 导入与导出
- MongoDB导入导出备份恢复实践
- JS module的导出和导入
- ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
- 使用oracle自带的命令进行导入导出
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
使用HTML5和Node构建超媒体API
【美】Mike Amundsen(麦克.阿蒙森) / 臧秀涛 / 电子工业出版社 / 2014-5 / 55.00元
《使用HTML5和Node构建超媒体API》探讨了超媒体API 的设计,介绍了作为超媒体API 的构件块的超媒体因子,并讲解了基本格式、状态转移、领域风格和应用流程这4 种超媒体设计元素;之后作者结合具体的场景,通过3个动手实验章节,从超媒体因子和超媒体设计元素入手,用实际的代码向我们详细地演示了超媒体API 的设计;最后介绍了超媒体设计的文档编写、注册与发布等内容。 《使用HTML5和No......一起来看看 《使用HTML5和Node构建超媒体API》 这本书的介绍吧!