Linux在shell脚本中执行MongoDB命令

已注销 -
Linux在shell脚本中执行MongoDB命令
方式一 直接在shell中嵌入MongoDB命令使用/usr/bin/mongo <<EOF mongodb命令 EOFEOF是End Of File的意思,只是一个标记,也可以替换为其他字符串<<表示标准输入重定向两者配合,就是将一对EOF标记中的内容作为标准输入传递给程序在配合上mongo命令,就是将内容传递给mongo,这样直接写MongoDB的命令就行
# create super DBA dba_root and DBA of pxjz dbz_pxjz
/usr/bin/mongo <<MongoDB
use admin;
isRootExist = (!!db.system.users.findOne({user:'dba_root'}));
isPxjzExist = (!!db.system.users.findOne({user:'dba_pxjz'}));
!isRootExist ? db.createUser({
    user: 'dba_root',
    pwd: '123',
    customData: {desc: '超级管理员'},
    roles: ['root']
}) : '超级管理员已经存在';

use pxjz;
!isPxjzExist ? db.createUser({
    user: 'dba_pxjz',
    pwd: '123',
    customData: {desc: 'pxjz数据库管理员'},
    roles: [
        {role: 'readWrite', db: 'pxjz'},
        {role: 'dbAdmin', db: 'pxjz'},
        {role: 'userAdmin', db: 'pxjz'}
    ]
}) : 'pxjz数据库管理员已经存在';
执行结果

exec-mongo.init.sh.jpg

方式二 编写单独的mongo脚本单独创建一个js脚本,在其中输入要执行的mongo命令,然后执行该脚本编写脚本然后使用mongo xxx.js执行该脚本需要注意的是,mongo脚本和一般的js文件还有些区别,用官方的话说就是,不能在JavaScript文件中使用任何shell帮助程序(例如,使用<dbname>,show dbs等),因为它们不是有效的JavaScript,但有替换的方法,参见下表Shell帮助等价JavaScriptshow dbs, show databasesdb.adminCommand('listDatabases')use <db>db = db.getSiblingDB('<db>')show collectionsdb.getCollectionNames()show usersdb.getUsers()show rolesdb.getRoles({showBuiltinRoles: true})show log<logname>db.adminCommand({ 'getLog' : '<logname>' })show logsdb.adminCommand({ 'getLog' : '*' })itcursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); }

所以在编写脚本的时候,如果用到左侧列出的Shell帮助,记得替换为右侧列对应的JS

// create super DBA 'dba_root' and DBA of pxjz 'dbz_pxjz'
db = db.getSiblingDB('admin');
isRootExist = (!!db.system.users.findOne({user:'dba_root'}));
isPxjzExist = (!!db.system.users.findOne({user:'dba_pxjz'}));
// create super DBA
!isRootExist ? db.createUser({
    user: 'dba_root',
    pwd: '123',
    customData: {desc: '超级管理员'},
    roles: ['root']
}) : '超级管理员已经存在';
// create DBA of pxjz
db = db.getSiblingDB('pxjz');
!isPxjzExist ? db.createUser({
    user: 'dba_pxjz',
    pwd: '123',
    customData: {desc: 'pxjz数据库管理员'},
    roles: [
      {role: 'readWrite', db: 'pxjz'},
      {role: 'dbAdmin', db: 'pxjz'},
      {role: 'userAdmin', db: 'pxjz'}
    ]
}) : 'pxjz数据管理员已经存在';
执行结果

exec-mongo.init.js.jpg

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

linuxmongodbshell

扩展阅读

加个好友,技术交流

1628738909466805.jpg