Sie können mongo Shell von Ihrer Java-Anwendung wie folgt ausführen, vorausgesetzt, Ihre Mongo-Binärdatei ist korrekt verknüpft. Aber es wäre viel besser, den Java-Treiber stattdessen zu verwenden, wie andere sagten.
Sie können mehr über die Ausführung Mongo Abfrage von der Kommandozeile finden Sie hier: https://docs.mongodb.com/v3.2/tutorial/write-scripts-for-the-mongo-shell/
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test {
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime();
try {
// the query you want to run in mongo, you can get it
// from a file using a FileReader
String query = "db.col.find();";
// the database name you need to use
String db = "database";
// run a command from terminal. this line is equivalent to
// mongo database --eval "db.col.find()"
// it calls the mongo binary and execute the javascript you
// passed in eval parameter. It should work for both unix and
// windows
Process pr = rt.exec(new String[]{"mongo", db, "--eval", query});
// read the output of the command
InputStream in = pr.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder out = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
out.append(line);
}
// print the command and close outputstream reader
System.out.println(out.toString());
reader.close();
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Danke .. wird es testen .. mit Java-Treiber für mein Szenario, finde ich es komplizierter .. wie die Mongo-Abfrage in externe Datei geschrieben wird und Abfrage in Shell-Abfrage geschrieben wird .. meine Anwendung muss die Shell lesen Abfrage von Datei und ausführen .. So finde ich es schwierig, Shell-Abfrage in Java-basierte Abfrage zu konvertieren .. Haben Sie Vorschläge in Bezug auf dieses Szenario? – oxvoxic
können Sie plz geben wenig Erklärung über den Parameter dieser Linie: Prozess pr = rt.exec (new String [] {"mongo", db, "- eval", Abfrage}); – oxvoxic
@oxvoxic siehe meine Bearbeitung, lass es mich wissen, wenn es nicht klar genug ist! – felix