489 Stimmen

Wie führt man Mongo-Befehle über Shell-Skripte aus?

Ich möchte Folgendes ausführen mongo Befehle in Shell-Skripten, z. B. in einem Skript test.sh :

#!/bin/sh
mongo myDbName
db.mycollection.findOne()
show collections

Wenn ich dieses Skript über ./test.sh wird die Verbindung zu MongoDB hergestellt, aber die folgenden Befehle werden nicht ausgeführt.

Wie man andere Befehle über ein Shell-Skript ausführt test.sh ?

4voto

Talespin_Kit Punkte 18819
mongo db_name --eval "db.user_info.find().forEach(function(o) {print(o._id);})"

4voto

mythicalcoder Punkte 2817

Kürzlich von mongodb zu Postgres migriert. So habe ich die Skripte verwendet.

mongo < scripts.js > inserts.sql

Lesen Sie die scripts.js und die Ausgabe wird umgeleitet zu inserts.sql .

scripts.js sieht so aus

use myDb;
var string = "INSERT INTO table(a, b) VALUES";
db.getCollection('collectionName').find({}).forEach(function (object) {
    string += "('" + String(object.description) + "','" + object.name + "'),";
});
print(string.substring(0, string.length - 1), ";");

inserts.sql sieht so aus

INSERT INTO table(a, b) VALUES('abc', 'Alice'), ('def', 'Bob'), ('ghi', 'Claire');

4voto

Jackson Harry Punkte 268

Das Flag --shell kann auch für Javascript-Dateien verwendet werden

 mongo --shell /path/to/jsfile/test.js

3voto

Erçin Akçay Punkte 1325

Wenn Sie das mit einer Zeile erledigen wollen, ist das ein einfacher Weg.

file.sh --> db.EXPECTED_COLLECTION.remove("_id":1234)

cat file.sh | mongo <EXPECTED_COLLECTION>

2voto

yǝsʞǝla Punkte 16057

Einzelne Shell-Skriptlösung mit der Möglichkeit, Mongo-Argumente zu übergeben ( --quiet , dbname, usw.):

#!/usr/bin/env -S mongo --quiet localhost:27017/test

cur = db.myCollection.find({});
while(cur.hasNext()) {
  printjson(cur.next());
}

El -S Flagge funktioniert möglicherweise nicht auf allen Plattformen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X