如何从java代码运行多个mongodb命令。当我运行java程序时,我需要mongodb命令在后台执行。这个程序抛出一些异常“线程中的异常”主“java.io.IOException:无法运行程序”db.createCollection(“employ”)“:error = 2,java.lang.ProcessBuilder.start中没有这样的文件或目录( ProcessBuilder.java:1029)...“。
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class try1
{
public static void main(String[] args) throws Exception{
String command ="mongo";
String command1="db.createCollection(\"employ\")";
Process proc = Runtime.getRuntime().exec(command);
Process proc1 = Runtime.getRuntime().exec(command1);
BufferedReader reader =
new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = "";
while((line = reader.readLine()) != null) {
System.out.print(line + "\n");
}
proc.waitFor();
BufferedReader reader1 =
new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line1 = "";
while((line1 = reader1.readLine()) != null) {
System.out.print(line1 + "\n");
}
proc1.waitFor();
}
}
我需要从java程序运行一组mongo db命令。该程序与其他终端命令一起使用,如“ls”(仅限单个命令)。但是如果我们将command1和命令都指定为“ls”则存在问题。只执行一个ls命令。如果只尝试使用一个mongo db命令,则“mongo”命令不会完全执行(程序不会终止)。是因为“proc.waitFor()”。
答案 0 :(得分:1)
public void qexecute()
{
try{String query="db.products.insert( { item: "card", qty: 15 } )";
MongoClient mongo = new MongoClient("localhost",27017);
DB db = mongo.getDB("test");
DBCollection collection = db.getCollection(tablename);
db.eval(query);
}
catch(UnknownHostException e){
System.out.println(e);
}
catch (MongoException.DuplicateKey e) {
System.out.println("Exception Caught" + e);
}
}
答案 1 :(得分:-1)
我强烈建议使用Mongo Spring Data。你可以这样做:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;
public class MongoDBCollection {
public static void main(String args[]) {
try {
//Connect to Database
MongoClient mongoClient = new MongoClient("localhost",27017);
DB db = mongoClient.getDB("myDB");
System.out.println("Your connection to DB is ready for Use::"+db);
//Create Collection
DBCollection linked = db.createCollection("employ",new BasicDBObject());
System.out.println("Collection employ created successfully");
} catch(Exception e) {
System.out.println(e.getClass().getName() + ": " + e.getMessage());
}
}
}