如何在shell下使用JavaScript和Mongodb交互?

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如下:

//查询一个表实例所有数据,得到一个游标var cursor=db.collection1.table1.find();cursor.forEach( split=cpyName=doc.cpyName+provinceCode=doc.provinceCode+modifyTime=cpyNatureCode=doc.cpyNatureCode+””;//企业性质+双引号,转成字符串 var cplen=cpyNatureCode.length if(cpyNatureCode!=’undefined’&& cplen > 2 ){cpyNatureCode=cpyNatureCode+”#”+cpyNatureCode.substr(0,2)+”00″; } 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; } (loc===’undefined’){loc=doc.businessPlace; }regCapital=doc.regCapital+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?mongo –quiet ip:host/dbname < test.js >> data//–quiet执行静默模式,去掉系统打印信息//ip mongo服务所在机的ip地址//host mogo服务对外提供的访问端口//dbname 是指要链接的数据库名字// test.js 是我们要执行的js文件// data 是我们输出的内容写入data文件里面一些Mongo的与SQL对应的操作语句操作 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 DATETIMEdb.users.update({},{$set:{join_date:newDate()}},{multi:true})删除字段join_datedb.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 usersdb.users.drop()插入数据INSERTINT Ousers (user_id,age,status) VALUES (“bcd001″,45,”A”)db.users.insert({user_id:”bcd001″,age:45,status:”A”})查询1SELECT * FROM usersdb.users.find()查询2 SELECT id,user_id,status FROM usersdb.users.find({},{user_id:1,status:1})查询3SELECT user_id,status FROM usersdb.users.find({},{user_id:1,status:1,_id:0})查询4SELECT * 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})查询6SELECT * FROM users WHERE status != “A”db.users.find({status:{$ne:”A”}})查询age=50db.users.find({status:”A”,age:50})查询age = 50db.users.find({$or:[{status:”A”},{age:50}]})查询9SELECT * FROM users WHERE age > 25db.users.find( {age:{$gt:25}} )查询10SELECT * FROM users WHERE age < 25db.users.find({age:{$lt:25}})查询age <= 50db.users.find({age:{$gt:25,$lte:50}})查询db.users.find({user_id:/bc/})查询db.users.find({user_id:/^bc/})查询user_id ASCdb.users.find({status:”A”}).sort({user_id:1})查询15SELECT * FROM users WHERE status=”A” ORDERBY user_id DESCdb.users.find({status:”A”}).sort({user_id:-1})查询(*) FROM usersdb.users.count() 或者db.users.find().count()查询(user_id) FROM usersdb.users.count({user_id:{$exists:true}})db.users.find({user_id:{$exists:true}}).count()查询(*) FROM users WHERE age>30db.users.count({age:{$gt:30}}) 或者db.users.find({age:{$gt:30}}).count()查询19SELECTDISTINCT(status) FROMusersdb.users.distinct(“status”)查询20SELECT * FROM users LIMIT 1db.users.findOne()db.users.find().limit(1)查询21SELECT * FROM users LIMIT 5 , 10db.users.find().limit(5).skip(10)查询22EXPLAIN SELECT * FROM users WHERE status=”A”db.users.find({status:”A”}).explain()更新age>25db.users.update({age:{$gt:25}},{$set:{status:”C”}},{multi:true})更新status=”A”db.users.update({status:”A”},{$inc:{age:3}},{multi:true})删除users WHERE status=”D”db.users.remove({status:”D”})删除usersdb.users.remove({})

看天,看雪,安安静静,不言不语都是好风景。

如何在shell下使用JavaScript和Mongodb交互?

相关文章:

你感兴趣的文章:

标签云: