mongodb 脚本文件

问题描述 投票:0回答:2

我是 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
    脚本?
database mongodb shell command-line mongodb-java
2个回答
20
投票

您可以使用 shell 脚本来完成。您可以使用以下命令来执行命令。

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

有关详细信息,请查看 Mongo 文档中的 编写 shell 文档。


0
投票

不确定答案是否太旧,或者有不同的方法可以做到这一点。 理论上来说,答案指定了一个“.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

文档

© www.soinside.com 2019 - 2024. All rights reserved.