专栏首页乐沙弥的世界mongo shell连接到mongoDB及shell提示符下执行js脚本

mongo shell连接到mongoDB及shell提示符下执行js脚本

同mysql数据库类似,mongoDB也可通过mongo客户端连接到mongod服务器来进行绝大多数日常管理。这个命令行工具就是mongo,在mysql中则是mysql。通过mongo命令可以连接到本机,异机,以及在linux shell或者mongo shell下执行js脚本。本文即是对此展开的描述。

一、mongo客户端连接到mongoDB

//mongo连接格式
$ mongo some-host:30000/myDB 

//连接到本机缺省端口,缺省数据库test
C:\Users\Think>mongo
MongoDB shell version: 3.2.9
connecting to: test

//连接到远程主机副本集,并查看版本
C:\Users\Think>mongo 192.168.1.242:27000
MongoDB shell version: 3.2.9
connecting to: 192.168.1.242:27000/test
repSetTest:PRIMARY> db.version()
3.0.12

//连接到远程主机mongos
C:\Users\Think>mongo 192.168.1.242:27017
MongoDB shell version: 3.2.9
connecting to: 192.168.1.242:27017/test
mongos>

//连接到特定的DB,端口号后加"/"及DB名
C:\Users\Think>mongo 192.168.1.242:27000/tempdb
MongoDB shell version: 3.2.9
connecting to: 192.168.1.242:27000/tempdb
repSetTest:PRIMARY> db
tempdb

//不连接任何DB,然后在提示符下进行连接DB
C:\Users\Think>mongo --nodb
MongoDB shell version: 3.2.9
> db
2016-09-06T14:56:19.323+0800 E QUERY    [thread1] ReferenceError: db is not defined :
@(shell):1:1

> conn = new Mongo("192.168.1.242:27000")
connection to 192.168.1.242:27000
> db = conn.getDB("tempdb")
tempdb
repSetTest:PRIMARY> db
tempdb

//使用connect方式连接数据库
C:\Users\Think>mongo --nodb
MongoDB shell version: 3.2.9
> var db=connect("192.168.1.242:27017/tempdb");
connecting to: 192.168.1.242:27017/tempdb
mongos> var list=db.user.find().toArray();
mongos> printjson(list);
[
        {
                "_id" : ObjectId("57cf79a7ed46066de447aac4"),
                "ename" : "robin"
        },
        {
                "_id" : ObjectId("57cf79aded46066de447aac5"),
                "ename" : "jerry"
        },
        {
                "_id" : ObjectId("57cf79b3ed46066de447aac6"),
                "ename" : "fred"
        }
]

二、shell提示符下执行js脚本

1、调用单个js脚本
# more find.js  
var item=db.user.find({}).toArray();
printjson(item);

# mongo localhost:27000/tempdb find.js  //调用时指定了主机及库名
MongoDB shell version: 3.0.12
connecting to: localhost:27000/tempdb
[
        {
                "_id" : ObjectId("57ce64c4843451f0d789a05e"),
                "ename" : "robin"
        },
        {
                "_id" : ObjectId("57ce6a940b4ef68464e67f8d"),
                "ename" : "fred"
        }
]

2、同时调用多个js脚本,如下,先执行insert.js,然后再执行find.js
# mongo localhost:27000/tempdb insert.js find.js 
MongoDB shell version: 3.0.12
connecting to: localhost:27000/tempdb
loading file: insert.js
loading file: find.js
[
        {
                "_id" : ObjectId("57ce64c4843451f0d789a05e"),
                "ename" : "robin"
        },
        {
                "_id" : ObjectId("57ce6a940b4ef68464e67f8d"),
                "ename" : "fred"
        },
        {
                "_id" : ObjectId("57ce6c6aff7edaac9160fe47"),
                "ename" : "jack"
        }
]

//下面在Windows环境下调用js脚本访问Linux下的mongodb
//命令行下调用时,此时未指定主机及库名,主机及库名在js脚本中定义
C:\Users\Think>type d:\temp\mongo_test.js
var mongo=new Mongo("192.168.1.242:27017");
var db=mongo.getDB("tempdb");
var collection=db.getCollection("user");
var list= collection.find().toArray();
printjson(list);

C:\Users\Think>mongo "d:\temp\mongo_test.js"
MongoDB shell version: 3.2.9
connecting to: test
Cannot use 'commands' readMode, degrading to 'legacy' mode
[
        {
                "_id" : ObjectId("57cf79a7ed46066de447aac4"),
                "ename" : "robin"        //Author: Leshami
        },                               //Blog  : http://blog.csdn.net/leshami     
        {
                "_id" : ObjectId("57cf79aded46066de447aac5"),
                "ename" : "jerry"
        },
        {
                "_id" : ObjectId("57cf79b3ed46066de447aac6"),
                "ename" : "fred"
        }
]

3、mongo提示符下执行使用load调用js
[root@node1 ~]# mongo localhost:27000
MongoDB shell version: 3.0.12
connecting to: localhost:27000/test
repSetTest:PRIMARY> use tempdb
switched to db tempdb
repSetTest:PRIMARY> load("find.js")
[
        {
                "_id" : ObjectId("57ce64c4843451f0d789a05e"),
                "ename" : "robin"
        },
        {
                "_id" : ObjectId("57ce6a940b4ef68464e67f8d"),
                "ename" : "fred"
        },
        {
                "_id" : ObjectId("57ce6c6aff7edaac9160fe47"),
                "ename" : "jack"
        }
]
true

4、命令提示符下直接执行javascript方法
C:\Users\Think>mongo 192.168.1.242:27017/tempdb --eval "printjson(db.getCollectionNames())"
MongoDB shell version: 3.2.9
connecting to: 192.168.1.242:27017/tempdb
[ "system.indexes", "user" ]

5、mongo提示符下调用系统命令
mongos> run("ls","-l","/home/robin")
2016-09-07T09:38:21.907+0800 I -        shell: started program (sh70522):  ls -l /home/robin
sh70522| total 4
sh70522| -rw-r--r-- 1 root root 2 Sep  7 09:38 test.txt
0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Oracle RAC OCR 与健忘症

        OCR就好比Windows的一个注册表,存储了所有与集群,RAC数据库相关的配置信息。而且是公用的配置,也就是说多个节点共享相同的配置信息。因此该配置应...

    Leshami
  • MySQL GTID 错误处理汇总

    1、GTID是全局事务ID,简化了主从架构的部署使得从库不再需要关心log_file和log_pos 2、由于事务ID的唯一性,使得将其他从库的GTID应用...

    Leshami
  • HeartBeat 集群组件概述

    Leshami
  • 国脉互联发布“政务大数据基因系统”,天翼征信与阿里合作开创征信新格局 | 大数据周周看

    数据猿导读 同智科技新三板募资数千万元,用于远程智能化控制研发及大数据中心建设;国脉互联发布最新大数据产品“政务大数据基因系统”;汽车行业大数据应用公司“数策软...

    数据猿
  • 京东副总裁郑宇:城市数据属于时空数据,拥有独特的处理方法论 | IJCAI 2019

    8 月 10 日至 16 日,IJCAI 2019 在中国澳门隆重召开,其中 14 日至 16 日为 Industry Day 环节,是大会专为业界思想碰撞与交...

    AI科技评论
  • 大数据24小时 | 滴滴大数据迎来新负责人,同盾科技获千万美元B+轮融资

    华鼎股份拟出资6450万元参与投资设立大数据子公司 ? 华鼎股份日前发布公告称,拟出资6450万元与恒逸石化、三联虹普以及金电联行共同投资设立大数据子公司“宁波...

    数据猿
  • 基金遇上大数据,是机遇还是噱头?

    数据猿导读 目前大数据在各行业的应用已经很多,但是基金行业对大数据的应用似乎刚起步。富国基金李强在接受记者采访时表示,虽然各基金公司都在跟进大数据在金融行业的业...

    数据猿
  • “氢元数据”:提供一站式大数据API,可按需定制

    “氢元数据”定位于基础数据服务商。开发服务的先行者,平台是以自有数据为基础,通过各种便捷服务整合及第三方数据接入,为互联网开发全行业提供标准化API技术支撑服务...

    BestSDK
  • [音频]大数据新闻周报(3/14~3/20)

    大数据文摘
  • 年薪50万+,缺口150万!大数据人才将在未来遭到企业疯抢!

    最近,谷歌爸爸又收购了一家公司。长期以来,谷歌致力于推动围绕 GoogleCloud 的企业业务,但在这方面的表面一直被亚马逊和微软吊打,这次的收购正是为了弥补...

    java思维导图

扫码关注云+社区

领取腾讯云代金券