`
qindongliang1922
  • 浏览: 2188617 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117663
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126070
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60024
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71399
社区版块
存档分类
最新评论

如何在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( 
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?
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 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 "%bc%"
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({})


最后欢迎大家扫码关注微信公众号:我是攻城师(woshigcs),我们一起学习,进步和交流!(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!



3
3
分享到:
评论

相关推荐

    使用Robo 3T中Shell命令操作MongoDB数据库.pptx

    MongoDB Shell命令的语法与在命令行(cmd)下执行的命令基本一致,但因为它是基于JavaScript的,所以也支持函数调用和变量赋值。例如,你可以定义变量存储查询条件,然后用这个变量来执行查询: ```javascript var ...

    MongoDB入门教程 + 架构简析 + java使用MongoDB的简单程序

    6. Java驱动程序:Java驱动程序提供与MongoDB交互的接口,包括连接、查询、插入、更新和删除操作。 通过学习上述内容,你将能够熟练地使用MongoDB,并在Java项目中集成MongoDB作为持久化存储。记得参考提供的文档,...

    《MongoDB实战》第2版-第2章-JavaScript命令操作Mongodb1

    在《MongoDB实战》第二版的第二章中,作者主要讲解了如何通过JavaScript Shell操作MongoDB,包括基本的CRUD(创建、读取、更新、删除)操作、构建索引和使用`explain()`方法来优化查询,以及一些基础的数据库管理...

    windows下MongoDB最新的安装包

    6. **连接MongoDB Shell**:一旦MongoDB服务器运行起来,你可以通过运行mongo.exe来打开MongoDB的Shell,这是一个交互式的JavaScript环境,可以用来管理数据库、集合和执行查询。 7. **安全设置**:默认情况下,...

    mongoDB非关系型数据库安装以及使用指南

    MongoDB是一款流行且功能强大...了解并掌握MongoDB的安装、使用和管理技巧,是成为高效数据处理专家的重要一步。在学习过程中,参考“mongoDB安装及使用指南”这份资料,能帮助你更深入地理解和实践MongoDB的相关操作。

    mongoDB部署.doc

    MongoDB提供了名为Mongo Shell的交互式JavaScript环境,用于管理和操作数据库。用户可以通过运行`mongo`命令进入Mongo Shell。Mongo Shell会连接到默认的"test"数据库,你可以在这里执行MongoDB的查询以及JavaScript...

    mongoDB数据库,解压直接使用

    3. **Mongo shell**:这是一个交互式的JavaScript环境,用于连接到MongoDB服务器,执行管理任务和查询数据。 MongoDB的关键特性还包括: - **复制集**:提供高可用性和数据冗余,通过创建多个数据副本来防止单点...

    MongoDB4.2.21 Linux版本安装包

    3. **Mongo shell**:这是一个JavaScript交互式命令行工具,用于与MongoDB服务器进行交互,执行管理任务和查询。 4. **Replica sets**:MongoDB支持复制集,这是一种高可用性配置,通过在多个节点间复制数据以确保...

    浅析MongoDB-PPT

    正则表达式在MongoDB中也得到支持,使用Perl兼容的正则表达式库(PCRE),但应谨慎使用,确保在执行前在JavaScript shell中验证其正确性。 游标是MongoDB查询结果的迭代器,可以使用`.limit()`, `.skip()`和`.sort...

    mongodb3.4.1-mac.tgz

    在这个“nodeJs+CCC 课程4 mongoDB简易使用”中,我们将会探讨如何在Mac环境下安装和使用MongoDB 3.4.1版本,这是一个重要的里程碑版本,引入了许多新特性和改进。 MongoDB 3.4.1 版本的主要特性包括: 1. **性能...

    MongoDB离线手册(含一个简易版和完全版)

    此外,还会讲解如何通过MongoDB的Shell进行这些操作,Shell是MongoDB提供的一个交互式JavaScript环境。简易版可能还会涵盖基本的查询语言,如查询筛选、投影、排序和分组,以及如何使用索引来优化查询性能。 完全版...

    MongoDB客户端访问(Shell方式 ) .pdf

    MongoDB 提供了一个内置的JavaScript Shell,这使得用户可以通过命令行进行交互式操作和管理数据库。以下是对MongoDB Shell的一些关键知识点的详细说明: 1. **启动MongoDB Shell**: MongoDB Shell 是一个基于...

    mongodb安装包

    5. **连接MongoDB shell**:MongoDB提供了一个交互式的JavaScript Shell,可以用来操作数据库。在命令行中输入"mongo",或者使用完整路径"C:\mongodb\bin\mongo.exe",你就可以与MongoDB服务器进行交互了。 6. **...

    MongoDB Client 客户端工具

    MongoDB Shell是MongoDB自带的一个JavaScript命令行接口,用于执行数据库操作,如创建数据库、集合,插入、查询、更新和删除数据,以及执行各种管理任务。它基于JavaScript语言,允许用户直接在命令行中编写和运行...

    Mongodb安装部署操作资料

    MongoDB是一种分布式文档数据库,广泛应用于现代Web应用、大数据分析、物联网(IoT)和实时应用程序。...通过学习和实践,你将能够熟练地在各种场景下使用MongoDB,为你的项目提供强大且灵活的数据存储解决方案。

    MongoDB安装与设置.docx

    2. **后台管理**:MongoDB的后台管理工具称为Mongo Shell,它是JavaScript的交互式shell。在bin目录下双击`mongo.exe`即可启动Mongo Shell。默认连接到`test`数据库,你可以通过执行JavaScript语句进行操作,如`2 + ...

    10天掌握MongoDB

    MongoDB的shell提供了强大的交互式环境,允许用户运行JavaScript脚本进行数据处理和分析。此外,用户还可以通过Shell的帮助命令获取操作指令和相关说明。 数据库、集合、文档的命名规范对于保证数据的组织和查询...

    mongodb源码

    MongoDB提供了丰富的数据库命令和交互式的JavaScript shell,供用户管理和操作数据库。`src/mongo/shell`目录包含了shell的相关实现。 通过深入研究`mongodb-mongo-397660d`源码,你可以了解MongoDB如何处理数据...

    MongoDB--全面.docx

    MongoDB还提供了一个交互式的后台管理工具——MongoDB Shell,它是一个基于JavaScript的命令行界面,允许用户直接与数据库进行交互,进行数据的插入、查询、更新和删除等操作。在MongoDB Shell中,用户可以直接运行...

Global site tag (gtag.js) - Google Analytics