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
时间: 2025-01-21 02:03:14

mongo shell连接到mongoDB及shell提示符下执行js脚本的相关文章

RMAN 提示符下执行SQL语句

       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐.实际上RMAN为我们提供了命令行下执行一些简单的SQL语句以及PL/SQL的方法,以避免上述情形.本文描述了RMAN提示符下的一些常用命令及其用法.   1.RMAN提示符下执行SQL语句       语法: SQL '<command>' ;           语法比较简单,就是提示符下输入SQL,后接SQL命令,命令用单引号括起来      command 通常为

Shell编程之Shell变量学习总结_linux shell

一.变量操作 A.变量显示.打印语法:echo $varB.变量设置语法:var=value 变量的设置规则:1.变量两端不能直接接空格符2.变量名称只能是因为字母与数字,但开头不能使数字3.双引号内的特殊字符如$等,保持原本特性 复制代码 代码如下: [root@bogon ~]# var="lang is $LANG"[root@bogon ~]# echo %varroot@bogon ~]# echo $varlang is zh_CN.UTF-8 1. 单引号内的特殊字符则仅

Linux Shell学习:如何调用Shell中的函数

说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很"自然"的错误,也让我吃了不少的苦头,所以总结一下Shell中函数的调用方法. 一.Shell中函数的定义 为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西.而Shell中函数的定义有两种方法,如下: function fname() { statements: } 或 fname() { statements; }

Linux shell编程基础 三、shell的基本结构

shell结构大体是由设定变量.内置命令.shell的语法结构.函数组成. 使用实例说明:test.sh #!/bin/bash #说明使用/bin/bash作为这个脚本的解释器 #定义一个函数 function my_fun () { echo "Hello, $1,today is $2" } #定义连个变量 name=$1 today=`date` #函数调用 my_fun "$name" "$today" 上面的这个脚本要想运行还需要做一

start-本地shell利用expect 执行远程主机脚本启动tomcat失败,无法启动。

问题描述 本地shell利用expect 执行远程主机脚本启动tomcat失败,无法启动. 本地shell脚本利用expect 执行远程主机脚本,远程脚本中设置了环境变量,使用catalina.sh start启动tomcat,但是无法启动,logs/下只有catalina.out并且无内容,登陆到远程主机执行脚本可以正常启动tomcat,是什么原因? 解决方案 看一下catalina.out,里面有没有什么错误提示之类的 解决方案二: 看一下日志文件,报的什么错.粘出来看看

求解 C# 登陆UNIX在shell下执行shell命令

问题描述 大家好新年好给大家先拜个早年,羊年吉祥.下面介绍一下我的需求.平时工作使用的是NETTERM软件登陆SunOS5.10系统.在UNIXshell下面执行相关操作.以前是使用BASH或者PERL之类的脚本来完成工作.现在想在本地计算机上使用C#来做这些事情.这样做的目的是屏蔽新人对脚本的不了解而造成不必要的损失和故障.我的思路是1.上传脚本2.执行脚本3.下载脚本生成的结果文件4.删除脚本及生成的文件目前:1.上传3.下载4.删除.在网上找到相关FTP类都已经实现.唯独在SHELL环境下

shell脚本中执行python脚本并接收其返回值的例子_linux shell

1.在shell脚本执行python脚本时,需要通过python脚本的返回值来判断后面程序要执行的命令 例:有两个py程序  hello.py 复制代码 代码如下: def main():     print "Hello" if __name__=='__main__':     main() world.py def main():     print "Hello" if __name__=='__main__':     main() shell 脚本 te

常用Linux Shell进阶部分小结_linux shell

如何计算当前目录下的文件数和目录数    # ls -l * |grep "^-"|wc -l ---- to count files # ls -l * |grep "^d"|wc -l ----- to count dir        如何只列子目录?    ls -F | grep /$ 或者  alias sub = "ls -F | grep /$"(linux)     ls -l | grep "^d" 或者

简介Linux中cp和mv搭配{,}在shell当中的用法_linux shell

经常会在博客或者论坛看到类似下面的命令 大括号扩展  Brace expansion  {     }  shell   作用 cp /etc/httpd/httpd.{,.bakup} 或者是 mv resume{z,}.doc 那么,在uinx / linux  shell命令中是什么意思?起什么作用呢? {  } 并没有什么实际的含义,但是却可以作为Brace expansion(大括号扩展或叫做花括号扩展)而经常用于产生各种组个.以下是翻译自 GNU/BASH  man page  的内