`
weitao1026
  • 浏览: 1033073 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

Mongodb的客户端支持
作为一款非常成熟NoSQL数据库,Mongdb对各种编程语言的支持已经非常完善了,目前已经支持各大主流编程语言包括:

1,mongo shell

2,python

3,java

4,c#

5,node.js

6,c++

在这些语言里面,最简单,最轻巧的就莫属mongo shell了,无须任何其他的依赖环境,只需要一个mongo客户端,就可以连接本地的,远程的各个mongo库了,这非常像各个数据库的界面工具,如Navicat,Sql Plus等, 交互式能力非常强,想要什么数据,很快就能直接查出来,当然想要运用的更灵活,肯定是嵌入到编程语言里面了。
Mongodb包结构介绍

1,mongo核心脚本进程

mongo ->mongo的交互式shell

mongod -> 数据库进程

mongos -> 查询路由控制器

2,二进制导入导出工具

mongodump ->创建bson文件导出来自mongod实例
mongorestore ->恢复上面导出的备份文件
bsondump ->转换bson文件成json文件
mongooplog ->记录一些正常副本的流式log

3,文本导入导出工具

mongoimport -> 导入来自csv,json,tsv的数据
mongoexport -> 导出mongo数据到csv,json,tsv格式的文件里

4,诊断工具

mongostat ->能够查看当前运行实例的副本,实例,集合,coll状态
mongotop -> 能够查看当前实例的读写比例和花费时间
mongosniff ->提供一个近实时的数据状态跟踪明细
mongoperf ->能够查看当前实例磁盘IO的性能

如何以js方式操作mongo表数据?

假如我们现在有一个需求,读取某个mongo库的一个表,然后清洗相关字段,再输入到一个本地文件里面,如何用js完成,封装的逻辑?
定义的js如下:

Java代码 复制代码 收藏代码
  1. //查询一个表实例所有数据,得到一个游标  
  2. var cursor=db.collection1.table1.find();  
  3. cursor.forEach(   
  4. function(doc) {   
  5.    var split="\1";//分隔符  
  6.    var anyCpyNo=doc.anyCpyNo+"";//主键  
  7.    var cpyName=doc.cpyName+"";//企业名称  
  8.    var logoUrl=doc.cpyOtherResource+""!='undefined'?doc.cpyOtherResource.logoUrl:"";//图片的url  
  9.    var provinceCode=doc.provinceCode+"";//省份编码  
  10.    var cityCode=doc.cityCode+"";//城市编码  
  11.    var modifyTime=new Date(doc.modifyTime).getTime();//更新时间   
  12.    var cpyNatureCode=doc.cpyNatureCode+"";//企业性质+双引号,转成字符串  
  13.    var cplen=cpyNatureCode.length   
  14.   if(cpyNatureCode!='undefined'&& cplen > 2 ){  
  15.     cpyNatureCode=cpyNatureCode+"#"+cpyNatureCode.substr(0,2)+"00";  
  16.    }  
  17.    var foundDate=new Date(doc.foundDate).getTime();//成立时间    
  18.    var subIndustryCode=doc.subIndustryCode;//行业标准  
  19.    if(subIndustryCode!='undefined' && subIndustryCode+"".length > 2){  
  20.        subIndustryCode=subIndustryCode.substr(0,2)+"00";   
  21.    }   
  22.    var legalPerson=doc.legalPerson;//法定代表人  
  23.   if(legalPerson==='undefined'){  
  24.       legalPerson=doc.manager;  
  25.    }  
  26.    var loc=doc.location+""//地址   
  27.    if(loc==='undefined'){  
  28.       loc=doc.businessPlace;  
  29.    }   
  30.    var regCode=doc.regCode+"";//工商注册号      
  31.    var orgCode=doc.orgCode+"";//组织机构代码  
  32.    var regCapital=doc.regCapital+""!='undefined'?doc.regCapital.amount+""!='undefined'?doc.regCapital.amount:"":"";//注册资金  
  33.    var taxRegCode=doc.taxRegCode+"";//税务登记号码  
  34.   
  35.  var r=anyCpyNo//主键  
  36.   +split+cpyName//公司名  
  37.   +split+logoUrl//图片url  
  38.   +split+provinceCode//省份编码  
  39.   +split+cityCode//城市编码  
  40.   +split+modifyTime//更新时间  
  41.   +split+cpyNatureCode//企业性质  
  42.   +split+foundDate//成立时间  
  43.   +split+subIndustryCode//二级行业标准的顶级类目  
  44.   +split+legalPerson//法定代表人  
  45.   +split+loc//地址  
  46.   +split+regCode//工商注册号  
  47.   +split+orgCode//组织机构代码  
  48.   +split+regCapital//注册资金  
  49.   +split+taxRegCode;//税务登记号码  
  50.   r=r.replace(/\r/gi, "");//Js正则去掉换行字符  
  51.   r=r.replace(/\n/gi, "");//Js正则去掉换行字符  
  52.   r=r.replace(/undefined/gi,"");//Js正则去掉未定义的语句  
  53.   print(r);//输入拼接的整行内容  
  54. }   
  55.   
  56. );  
//查询一个表实例所有数据,得到一个游标
var cursor=db.collection1.table1.find();
cursor.forEach( 
function(doc) { 
   var split="\1";//分隔符
   var anyCpyNo=doc.anyCpyNo+"";//主键
   var cpyName=doc.cpyName+"";//企业名称
   var logoUrl=doc.cpyOtherResource+""!='undefined'?doc.cpyOtherResource.logoUrl:"";//图片的url
   var provinceCode=doc.provinceCode+"";//省份编码
   var cityCode=doc.cityCode+"";//城市编码
   var modifyTime=new Date(doc.modifyTime).getTime();//更新时间 
   var cpyNatureCode=doc.cpyNatureCode+"";//企业性质+双引号,转成字符串
   var cplen=cpyNatureCode.length 
  if(cpyNatureCode!='undefined'&& cplen > 2 ){
    cpyNatureCode=cpyNatureCode+"#"+cpyNatureCode.substr(0,2)+"00";
   }
   var foundDate=new Date(doc.foundDate).getTime();//成立时间  
   var subIndustryCode=doc.subIndustryCode;//行业标准
   if(subIndustryCode!='undefined' && subIndustryCode+"".length > 2){
       subIndustryCode=subIndustryCode.substr(0,2)+"00"; 
   } 
   var legalPerson=doc.legalPerson;//法定代表人
  if(legalPerson==='undefined'){
      legalPerson=doc.manager;
   }
   var loc=doc.location+""//地址 
   if(loc==='undefined'){
      loc=doc.businessPlace;
   } 
   var regCode=doc.regCode+"";//工商注册号    
   var orgCode=doc.orgCode+"";//组织机构代码
   var regCapital=doc.regCapital+""!='undefined'?doc.regCapital.amount+""!='undefined'?doc.regCapital.amount:"":"";//注册资金
   var taxRegCode=doc.taxRegCode+"";//税务登记号码

 var r=anyCpyNo//主键
  +split+cpyName//公司名
  +split+logoUrl//图片url
  +split+provinceCode//省份编码
  +split+cityCode//城市编码
  +split+modifyTime//更新时间
  +split+cpyNatureCode//企业性质
  +split+foundDate//成立时间
  +split+subIndustryCode//二级行业标准的顶级类目
  +split+legalPerson//法定代表人
  +split+loc//地址
  +split+regCode//工商注册号
  +split+orgCode//组织机构代码
  +split+regCapital//注册资金
  +split+taxRegCode;//税务登记号码
  r=r.replace(/\r/gi, "");//Js正则去掉换行字符
  r=r.replace(/\n/gi, "");//Js正则去掉换行字符
  r=r.replace(/undefined/gi,"");//Js正则去掉未定义的语句
  print(r);//输入拼接的整行内容
} 

);



如何在Centos中向mongos提交执行js?

Java代码 复制代码 收藏代码
  1. mongo --quiet   ip:host/dbname <  test.js >> data  
  2. //--quiet执行静默模式,去掉系统打印信息  
  3. //ip mongo服务所在机的ip地址  
  4. //host mogo服务对外提供的访问端口  
  5. //dbname 是指要链接的数据库名字  
  6. // test.js 是我们要执行的js文件  
  7. // data 是我们输出的内容写入data文件里面  
mongo --quiet   ip:host/dbname <  test.js >> data
//--quiet执行静默模式,去掉系统打印信息
//ip mongo服务所在机的ip地址
//host mogo服务对外提供的访问端口
//dbname 是指要链接的数据库名字
// test.js 是我们要执行的js文件
// data 是我们输出的内容写入data文件里面


一些Mongo的与SQL对应的操作语句

Java代码 复制代码 收藏代码
  1. 操作    
  2. SQ语法  
  3. Mongodb语法  
  4.   
  5. 建表  
  6. CREATE TABLE users (id MEDIUM INT NOTNULL AUTO_INCREMENT,user_idVarchar(30),ageNumber,statuschar(1),PRIMARYKEY(id))  
  7. db.users.insert({user_id:"abc123",age:55,status:"A"})  
  8. users集合可以不存在,在插入第一条时会创建,当然也可以  
  9. 提前创建,执行语句:db.createCollection("users")  
  10.   
  11. 新增字段      
  12. ALTER TABLE users ADD join_date DATETIME  
  13.   
  14. db.users.update({},{$set:{join_date:newDate()}},{multi:true})  
  15. 删除字段  
  16. ALTER TABLE users DROP COLUMN join_date  
  17. db.users.update({},{$unset:{join_date:""}},{multi:true})  
  18. 建立索引  
  19. CREATE INDEX idx_user_id_asc ON users(user_id)  
  20. db.users.createIndex({user_id:1})  
  21. 建立索引指定排序  
  22. CREATE INDEX idx_user_id_asc_age_desc ON users(user_id,ageDESC)  
  23. db.users.createIndex({user_id:1,age:-1})  
  24.   
  25. 删除一个表  
  26.   
  27. DROP TABLE users  
  28.   
  29. db.users.drop()  
  30. 插入数据  
  31. INSERTINT Ousers (user_id,age,status) VALUES ("bcd001",45,"A")  
  32. db.users.insert({user_id:"bcd001",age:45,status:"A"})  
  33. 查询1  
  34. SELECT * FROM users  
  35. db.users.find()  
  36. 查询2   
  37. SELECT id,user_id,status FROM users  
  38.   
  39. db.users.find({},{user_id:1,status:1})  
  40.   
  41. 查询3  
  42. SELECT user_id,status FROM users  
  43.   
  44. db.users.find({},{user_id:1,status:1,_id:0})  
  45.   
  46. 查询4  
  47. SELECT * FROM users WHERE status = "A"  
  48. db.users.find({status:"A"})  
  49. 查询5   
  50. SELECT user_id,status FROM users WHERE status = "A"  
  51.   
  52. db.users.find({status:"A"},{user_id:1,status:1,_id:0})  
  53. 查询6  
  54. SELECT * FROM users  WHERE status != "A"  
  55.   
  56. db.users.find({status:{$ne:"A"}})  
  57. 查询7  
  58. SELECT * FROM users WHERE status="A" AND age=50  
  59.   
  60. db.users.find({status:"A",age:50})  
  61.   
  62. 查询8  
  63. SELECT * FROM users WHERE status="A" OR age = 50  
  64. db.users.find({$or:[{status:"A"},{age:50}]})  
  65. 查询9  
  66. SELECT * FROM users WHERE age > 25  
  67.   
  68. db.users.find( {age:{$gt:25}} )  
  69.   
  70. 查询10  
  71. SELECT * FROM users  WHERE age < 25  
  72.   
  73. db.users.find({age:{$lt:25}})  
  74. 查询11  
  75. SELECT * FROM users WHERE age > 25 AND age <= 50  
  76.   
  77. db.users.find({age:{$gt:25,$lte:50}})  
  78. 查询12  
  79. SELECT * FROM users  WHERE user_id like "%bc%"  
  80. db.users.find({user_id:/bc/})  
  81. 查询13  
  82. SELECT * FROM users  WHERE user_id like "bc%"  
  83.   
  84. db.users.find({user_id:/^bc/})  
  85.   
  86. 查询14  
  87. SELECT * FROM users WHERE status="A" ORDER BY user_id ASC  
  88.   
  89. db.users.find({status:"A"}).sort({user_id:1})  
  90.   
  91. 查询15  
  92. SELECT * FROM users WHERE status="A" ORDERBY user_id DESC  
  93.   
  94. db.users.find({status:"A"}).sort({user_id:-1})  
  95.   
  96. 查询16  
  97. SELECT COUNT(*) FROM users  
  98.   
  99. db.users.count()  或者  
  100. db.users.find().count()  
  101.   
  102. 查询17  
  103. SELECT COUNT (user_id) FROM users  
  104.   
  105. db.users.count({user_id:{$exists:true}})  
  106. db.users.find({user_id:{$exists:true}}).count()  
  107.   
  108. 查询18  
  109. SELECT COUNT(*) FROM users WHERE age>30  
  110.   
  111. db.users.count({age:{$gt:30}}) 或者  
  112. db.users.find({age:{$gt:30}}).count()  
  113.   
  114. 查询19  
  115. SELECTDISTINCT(status) FROMusers  
  116.   
  117. db.users.distinct("status")  
  118.   
  119. 查询20  
  120. SELECT * FROM  users LIMIT 1  
  121.   
  122. db.users.findOne()  
  123. db.users.find().limit(1)  
  124.   
  125. 查询21  
  126. SELECT * FROM users LIMIT 5 , 10  
  127.   
  128. db.users.find().limit(5).skip(10)  
  129.   
  130. 查询22  
  131. EXPLAIN SELECT * FROM users WHERE status="A"  
  132.   
  133. db.users.find({status:"A"}).explain()  
  134.   
  135. 更新1  
  136. UPDATE users SET status="C" WHERE age>25  
  137.   
  138. db.users.update({age:{$gt:25}},{$set:{status:"C"}},{multi:true})  
  139.   
  140. 更新2   
  141. UPDATE users SET age=age+3 WHERE status="A"  
  142.   
  143. db.users.update({status:"A"},{$inc:{age:3}},{multi:true})  
  144.   
  145. 删除1  
  146. DELETE FROM users WHERE status="D"  
  147. db.users.remove({status:"D"})  
  148.   
  149. 删除2  
  150. DELETE FROM users  
  151.   
  152. db.users.remove({}) 
分享到:
评论

相关推荐

    mongodb客户端

    MongoDB客户端支持从MySQL导入数据,这是一个非常实用的功能,尤其对于那些希望从传统的关系型数据库迁移到NoSQL架构的用户。这个过程通常涉及数据转换,将MySQL中的表结构和数据映射到MongoDB的文档格式。在导入...

    MongoDB客户端工具

    综上所述,这些文件名揭示了MongoDB客户端工具可能采用的多种技术,如Syncfusion和DevExpress组件用于构建高级用户界面,Krypton Toolkit提供了Ribbon界面风格,而NPOI支持与Excel的数据交互。这些工具共同构建了一...

    mongodb windows客户端-免安装版

    免安装版MongoDB客户端通常包含一系列实用功能,例如: 1. 数据库连接:能够创建和管理多个MongoDB服务器的连接,包括本地和远程实例。 2. 图形化界面:通过直观的GUI(图形用户界面)展示数据库结构,使数据浏览和...

    mongodb 客户端

    MongoDB客户端是用于与MongoDB数据库进行交互的工具,允许用户进行数据查询、管理、备份和恢复等操作。 "NoSQL Manager for MongoDB" 是一个专为MongoDB设计的图形化管理工具,它提供了用户友好的界面来简化数据库...

    MongoDB客户端

    MongoDB客户端,如RoBoMongo,是用于与MongoDB数据库交互的强大工具。MongoDB是一种流行的NoSQL数据库系统,以其灵活性、高性能和易于扩展性而受到许多开发者的喜爱。RoBoMongo(现更名为Studio 3T)是MongoDB的一款...

    MongoVUE,MongoDB客户端

    MongoVUE作为MongoDB的客户端,为用户提供了直观且功能丰富的界面,使得数据操作变得更加直观和高效。 MongoVUE的主要特性包括: 1. **连接管理**:MongoVUE允许用户轻松地建立和管理与MongoDB服务器的连接。用户...

    mongodb客户端工具

    MongoDB客户端工具则是用于管理和操作MongoDB数据库的重要辅助软件。在本篇中,我们将重点介绍"Mongodb客户端工具",特别是提到的"Mongobooster"。 **Mongobooster** Mongobooster是一款专为MongoDB设计的高效、...

    mongodb 客户端Robo 3T 1.1.1

    相比其他MongoDB客户端,例如Mongo Vue,根据描述,Robo 3T在某些方面表现出更优秀的表现,因此被推荐使用。 在标签中,“Robomongo”是Robo 3T的早期名称,随着软件的发展,它被重新命名为Robo 3T,以反映其更多的...

    MongoDB客户端robo3t解压版

    在本文中,我们将深入探讨MongoDB及其管理工具Robo 3T(原名Robomongo),特别是关于“MongoDB客户端robo3t解压版”的使用。 Robo 3T是一款轻量级、直观的MongoDB管理工具,适用于Windows、macOS和Linux操作系统。...

    ubuntu 16.04的mongodb客户端

    Ubuntu 16.04已经停止了主流支持,但依旧有大量用户在使用,因此确保在这个版本上可用的MongoDB客户端非常重要。 描述中提到的"亲测可以用的",意味着这个特定的客户端版本,即Robo 3T 1.2.1,已经在Ubuntu 16.04上...

    NoSQL Manager for MongoDB客户端

    NoSQL Manager for MongoDB客户端则提供了对这些文档的便捷操作,包括创建、编辑、删除和搜索文档,极大地提升了开发和运维效率。 该客户端支持多种功能,如: 1. 数据库和集合管理:用户可以通过图形界面轻松创建...

    MongoDB Client 客户端工具

    MongoDB客户端工具是与MongoDB数据库交互的重要组件,它们提供了丰富的功能,帮助用户进行数据管理、查询、备份、恢复以及性能分析。下面将详细介绍MongoDB的客户端工具及其重要性。 1. MongoDB Shell MongoDB ...

    robomongo,mongodb客户端

    总的来说,RoboMongo作为MongoDB的客户端工具,以其丰富的功能和用户友好的界面,极大地提升了开发人员对MongoDB数据库的管理效率。如果你正在寻找一个强大的MongoDB管理工具,RoboMongo无疑是一个值得尝试的选择。

    mongodb客户端连接工具

    MongoDB的客户端连接工具对于数据库的管理和操作至关重要,它们提供了图形化的用户界面(GUI),使得数据库管理员和开发人员可以更加直观和高效地与MongoDB交互。"mongoVUE"就是这样一个客户端工具,它被描述为...

    cpp-mongolite快速而简便的R语言MongoDB客户端

    "cpp-mongolite快速而简便的R语言MongoDB客户端" 这个标题表明我们讨论的是一个名为“cpp-mongolite”的R语言库,它专门用于与MongoDB数据库进行交互。"cpp-"可能表示这个库部分是用C++编写的,或者与C++接口有关,...

    mongodb 4.0 客户端工具nosqlbooster

    MongoDB 4.0 客户端工具NosqlBooster是一款专为MongoDB数据库设计的强大图形用户界面(GUI)工具,适用于管理和操作MongoDB数据库。NosqlBooster提供了直观的界面,使得对MongoDB的数据查询、编辑、管理变得更加便捷...

    mongodb-compass windows客户端管理工具

    **附加组件**:某些文件如`MongoDBCompass.exe`是应用程序的可执行文件,而其他文件如`libGLESv2.dll`、`ffmpeg.dll`等是运行时库文件,它们确保MongoDB Compass在Windows系统上正确运行并提供图形和视频处理支持。...

Global site tag (gtag.js) - Google Analytics