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代码
- //查询一个表实例所有数据,得到一个游标
- 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代码
- mongo --quiet ip:host/dbname < test.js >> data
- //--quiet执行静默模式,去掉系统打印信息
- //ip mongo服务所在机的ip地址
- //host mogo服务对外提供的访问端口
- //dbname 是指要链接的数据库名字
- // test.js 是我们要执行的js文件
- // data 是我们输出的内容写入data文件里面
一些Mongo的与SQL对应的操作语句
Java代码
- 操作
- SQ语法
- Mongodb语法
- 建表
- CREATE TABLE users (id MEDIUM INT NOTNULL AUTO_INCREMENT,user_idVarchar(30),ageNumber,statuschar(1),PRIMARYKEY(id))
- db.users.insert({user_id:"abc123",age:55,status:"A"})
- users集合可以不存在,在插入第一条时会创建,当然也可以
- 提前创建,执行语句:db.createCollection("users")
- 新增字段
- ALTER TABLE users ADD join_date DATETIME
- db.users.update({},{$set:{join_date:newDate()}},{multi:true})
- 删除字段
- ALTER TABLE users DROP COLUMN join_date
- db.users.update({},{$unset:{join_date:""}},{multi:true})
- 建立索引
- CREATE INDEX idx_user_id_asc ON users(user_id)
- db.users.createIndex({user_id:1})
- 建立索引指定排序
- CREATE INDEX idx_user_id_asc_age_desc ON users(user_id,ageDESC)
- db.users.createIndex({user_id:1,age:-1})
- 删除一个表
- DROP TABLE users
- db.users.drop()
- 插入数据
- INSERTINT Ousers (user_id,age,status) VALUES ("bcd001",45,"A")
- db.users.insert({user_id:"bcd001",age:45,status:"A"})
- 查询1
- SELECT * FROM users
- db.users.find()
- 查询2
- SELECT id,user_id,status FROM users
- db.users.find({},{user_id:1,status:1})
- 查询3
- SELECT user_id,status FROM users
- db.users.find({},{user_id:1,status:1,_id:0})
- 查询4
- SELECT * FROM users WHERE status = "A"
- db.users.find({status:"A"})
- 查询5
- SELECT user_id,status FROM users WHERE status = "A"
- db.users.find({status:"A"},{user_id:1,status:1,_id:0})
- 查询6
- SELECT * FROM users WHERE status != "A"
- db.users.find({status:{$ne:"A"}})
- 查询7
- SELECT * FROM users WHERE status="A" AND age=50
- db.users.find({status:"A",age:50})
- 查询8
- SELECT * FROM users WHERE status="A" OR age = 50
- db.users.find({$or:[{status:"A"},{age:50}]})
- 查询9
- SELECT * FROM users WHERE age > 25
- db.users.find( {age:{$gt:25}} )
- 查询10
- SELECT * FROM users WHERE age < 25
- db.users.find({age:{$lt:25}})
- 查询11
- SELECT * FROM users WHERE age > 25 AND age <= 50
- db.users.find({age:{$gt:25,$lte:50}})
- 查询12
- SELECT * FROM users WHERE user_id like "�%"
- db.users.find({user_id:/bc/})
- 查询13
- SELECT * FROM users WHERE user_id like "bc%"
- db.users.find({user_id:/^bc/})
- 查询14
- SELECT * FROM users WHERE status="A" ORDER BY user_id ASC
- db.users.find({status:"A"}).sort({user_id:1})
- 查询15
- SELECT * FROM users WHERE status="A" ORDERBY user_id DESC
- db.users.find({status:"A"}).sort({user_id:-1})
- 查询16
- SELECT COUNT(*) FROM users
- db.users.count() 或者
- db.users.find().count()
- 查询17
- SELECT COUNT (user_id) FROM users
- db.users.count({user_id:{$exists:true}})
- db.users.find({user_id:{$exists:true}}).count()
- 查询18
- SELECT COUNT(*) FROM users WHERE age>30
- db.users.count({age:{$gt:30}}) 或者
- db.users.find({age:{$gt:30}}).count()
- 查询19
- SELECTDISTINCT(status) FROMusers
- db.users.distinct("status")
- 查询20
- SELECT * FROM users LIMIT 1
- db.users.findOne()
- db.users.find().limit(1)
- 查询21
- SELECT * FROM users LIMIT 5 , 10
- db.users.find().limit(5).skip(10)
- 查询22
- EXPLAIN SELECT * FROM users WHERE status="A"
- db.users.find({status:"A"}).explain()
- 更新1
- UPDATE users SET status="C" WHERE age>25
- db.users.update({age:{$gt:25}},{$set:{status:"C"}},{multi:true})
- 更新2
- UPDATE users SET age=age 3 WHERE status="A"
- db.users.update({status:"A"},{$inc:{age:3}},{multi:true})
- 删除1
- DELETE FROM users WHERE status="D"
- db.users.remove({status:"D"})
- 删除2
- DELETE FROM users
- db.users.remove({})