shell mongodb脚本文件

xv8emn3q  于 7个月前  发布在  Shell
关注(0)|答案(2)|浏览(112)

我是Mongodb的新手。
我们可以通过在关系数据库中的脚本.sql文件中指定它来执行查询列表,并可以通过运行命令源c:\test.sql来运行它。
例如

CREATE DATABASE `sandbox`;
USE `sandbox`;

CREATE TABLE pet (
    name VARCHAR(20), 
    owner VARCHAR(20),
    species VARCHAR(20), 
    sex CHAR(1), 
    birth DATE, 
   death DATE
);
SHOW TABLES;

然后它可以被执行为

$ mysql -u root -p admin
mysql > source test.sql;

常见问题

  • 我们如何在Mongodb中做到这一点?
  • 哪种类型的文件可以存储mongodb命令?
  • 如何执行mongodb脚本?
11dmarpk

11dmarpk1#

你可以用shell脚本来实现。您可以使用以下命令执行这些命令。

./mongo server:27017/dbname --quiet my_commands.js

有关详细信息,请查看Mongo docs中的Scripting the shell文档。

snvhrwxg

snvhrwxg2#

不知道是不是答案太老了,或者有不同的方法可以做到这一点。好吧,理论上,答案指定了一个'.js'文件,但告诉“可以用shell脚本来做”。
无论如何,我想可能是现在有更好的文档,但这里有另一种方法来做它

如何在mongodb脚本中存储这些命令?

我认为这个问题也是“应该使用哪种文件类型/扩展名来创建mongo脚本文件”
使用JavaScript(不需要任何类型的库,只需mongosh)
例如

db = connect( 'mongodb://localhost/sandbox' );
console.log(db);
console.log(Object.keys(db));

我们如何在mongodb中做到这一点?

mongosh shell中,使用load命令,并指定脚本的绝对或相对路径。

示例

假设我们使用的是Linux,请执行以下操作

mkdir mongo_sandbox
cd mongo_sandbox
touch mongo_script.js

现在让我们创建一个mongo JavaScript脚本,你知道使用Vim,VSCode,笔和纸。无论

db = connect( 'mongodb://localhost/myDatabase' );
db.movies.insertMany( [
   {
      title: 'Titanic',
      year: 1997,
      genres: [ 'Drama', 'Romance' ]
   },
   {
      title: 'Spirited Away',
      year: 2001,
      genres: [ 'Animation', 'Adventure', 'Family' ]
   },
   {
      title: 'Casablanca',
      genres: [ 'Drama', 'Romance', 'War' ]
   }
] )

let movies = db.movies.find();

console.log(movies);

现在冷静,午餐mongosh

mongosh sandbox
# ...bla bla bla 
sandbox>

运行脚本

load( "./mongo_script.js" )

其输出

sandbox> load( "./mongo_script.js" )
[
  {
    _id: ObjectId("64e8560e2932f758ce7d11a3"),
    title: 'Titanic',
    year: 1997,
    genres: [ 'Drama', 'Romance' ]
  },
  {
    _id: ObjectId("64e8560e2932f758ce7d11a4"),
    title: 'Spirited Away',
    year: 2001,
    genres: [ 'Animation', 'Adventure', 'Family' ]
  },
  {
    _id: ObjectId("64e8560e2932f758ce7d11a5"),
    title: 'Casablanca',
    genres: [ 'Drama', 'Romance', 'War' ]
  }
]
true

文档

相关问题