java - 从 java 程序运行我的 mongodb 命令

标签 java linux mongodb

如何从 java 代码运行多个 mongodb 命令。当我运行 java 程序时,我需要 mongodb 命令在后台执行。该程序抛出一些异常“线程“主”java.io.IOException中的异常:无法运行程序“db.createCollection(“employ”)”:错误= 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 和 command 都指定为“ls”,就会出现问题。只执行一个 ls 命令。如果只尝试使用一个 mongo db 命令,“mongo”命令不会完全执行(程序不会终止)。是不是因为“proc.waitFor()”。

最佳答案

我得到了代码。 db.eval() 函数符合我的目的。它工作得很好。 :) “查询”是存储 mongodb 查询的字符串。

 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);
           }
    }

关于java - 从 java 程序运行我的 mongodb 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567277/

相关文章:

java - 数据库表的 2D ArrayList

ruby - Sed 从 Ruby 内部逃逸

Mysql设置SYSTEM时区

linux - 如何运行没有 .sh 扩展名的 bash 脚本?

mongodb - 如何使用spring数据mongodb聚合在组中使用sum和condition

ruby-on-rails - mongoid - 查询嵌入式文档

javascript - Mongo 客户端无法访问带有下划线前缀的集合

java - quartz 调度问题

java - 如何从响应中提取 json 数据 - Java

java - 如何从日历中获取 UTC 时间戳?