【问题标题】:Mongo bash script to create Db and collections用于创建数据库和集合的 Mongo bash 脚本
【发布时间】:2015-12-12 22:01:36
【问题描述】:

我正在使用 vagrant 并尝试创建一些 bash 语句来初始化我的 vagrant 本地机器,例如服务器配置:

我正在安装 Mongo,一切正常,直到我需要创建数据库和一些集合:我想这样做:

mongo 
use redirect
db.createCollection("first")
db.createCollection("second")
db.createCollection("third")
exit

从我的终端并使用 ssh 连接到机器正在工作,但我想让这个过程自动进行,我尝试完全像上面一样运行代码并且不工作。或者类似的东西:

mongo --shell use redirect
mongo --shell db.createCollection("first")

如果有人知道如何做到这一点,我将不胜感激。

提前致谢。

【问题讨论】:

    标签: bash mongodb shell ubuntu vagrant


    【解决方案1】:

    您需要知道创建集合不是必需的,当您开始使用它时,Mongo 会创建它。另一方面,如果你想在数据库中创建一些固定装置,假设集合已经存在。

    【讨论】:

      【解决方案2】:

      我认为您有两种可能性:

      1. --shell 替换为--eval(参见http://docs.mongodb.org/master/tutorial/write-scripts-for-the-mongo-shell/#eval-option

        mongo --shell db.createCollection("first")
        
      2. 将您的步骤顺序放入 js 文件并运行(请参阅http://docs.mongodb.org/master/tutorial/write-scripts-for-the-mongo-shell/#execute-a-javascript-file

        mongo localhost:27017/test myjsfile.js
        

      【讨论】:

        【解决方案3】:

        您可以指定要用作 mongo 命令的参数的数据库。如果它还不存在,它将为您创建。这可能解决了你的问题。请参阅手册页中的选项。

        您可以使用 --eval 选项进一步指定一个 java 表达式供 mongo 求值。因此,以下代码将在例如 bash 中执行您的代码:

        $ mongo redirect --eval 'db.createCollection("first"); db.createCollection("second"); db.createCollection("third")'
        MongoDB shell version v3.4.9
        connecting to: mongodb://127.0.0.1:27017/redirect
        MongoDB server version: 3.4.9
        { "ok" : 1 }
        $
        

        【讨论】:

          【解决方案4】:
          echo 'db.createCollection("first")' | mongo redirect
          

          【讨论】:

          • 你能解释一下备份你的代码吗?
          猜你喜欢
          • 2019-06-30
          • 2011-08-11
          • 1970-01-01
          • 2015-08-08
          • 1970-01-01
          • 2010-12-12
          • 1970-01-01
          • 2016-10-22
          • 2012-10-05
          相关资源
          最近更新 更多