使用Java和SleepyMongose执行MongoDB插入

使用Java和SleepyMongose执行MongoDB插入,java,mongodb,httpurlconnection,sleepy-mongoose,Java,Mongodb,Httpurlconnection,Sleepy Mongoose,这是我在这里的第一篇文章 简而言之,我已经设置了一个MongoDB实例,并安装了一个REST服务来在其上运行命令。我选择的那个是嗜睡的人 我一直在尝试编写一个简单的Java程序来完成三件事:查找、插入和另一个查找。基本上,显示集合,插入一些内容,然后再次显示以显示更新。发现工作正常,但插入件一直给我带来麻烦 使用带有数据参数的curl,但我一直在使用Java的HttpURLConnection。如何将该数据参数添加到HttpURLConnection?以下是我一直在尝试的: private st

这是我在这里的第一篇文章

简而言之,我已经设置了一个MongoDB实例,并安装了一个REST服务来在其上运行命令。我选择的那个是嗜睡的人

我一直在尝试编写一个简单的Java程序来完成三件事:查找、插入和另一个查找。基本上,显示集合,插入一些内容,然后再次显示以显示更新。发现工作正常,但插入件一直给我带来麻烦

使用带有数据参数的curl,但我一直在使用Java的HttpURLConnection。如何将该数据参数添加到HttpURLConnection?以下是我一直在尝试的:

private static void POST (String command) {

try {
        // The 'command' is just going to be 'insert' for now.
        URL restURL = new URL(REST + DATABASE + "/" + COLLECTION + "/_" + command);
        HttpURLConnection conn = (HttpURLConnection) restURL.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.connect();

        OutputStream out = conn.getOutputStream();
        String x = "docs=[{'x':1}]";
        out.write(x.getBytes());
        out.close();

        conn.disconnect();
    }

catch (Exception e) {
        System.out.println("Uh oh...");
        e.printStackTrace();
    }
}
我使用Sleepymongose的目的是否正确?有更好的选择吗?我不受任何RESTAPI的束缚,但我想把插入的内容写下来


感谢大家

出于某种原因,它只有在附加了读卡器的情况下才起作用。如果我在写入后立即附加以下内容,它将非常有效:

String line, output = "";

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = rd.readLine()) != null)
    output += line;

rd.close();

有人能解释一下吗?

我碰巧在为一个Android项目编写类似的代码,并且在写一篇博文时成功地完成了以下工作

请注意,返回的数据需要在作为HttpResponse传入时进行解析。我一直在将其转换为字符串,然后提取JSON值,见下文

插入样本:

String[] link2 = {"http://XXX.XXX.XXX.XXX:27080/foo/bar/_insert", "[{\"x\":2},{\"x\":3}]"};
new HTTPPost().execute(link2);
文章的代码,你的会有所不同,因为不是专门为Android编写的。将AndroidHttpClient替换为HttpClient。注意用于将文档指定为密钥的BasicNameValuePair

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

protected HttpResponse doInBackground(String... params) {
        String link = params[0];
        String value = params[1];
        HttpPost post = new HttpPost(link);
        AndroidHttpClient client = AndroidHttpClient.newInstance("Android");

        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("docs", value));
            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            return client.execute(post);

        } catch (IOException e) {
            return null;
        } finally {
            client.close();
        }
    }
要提取JSON值,请执行以下操作:

public String parseJSON(String toParse)
{
    try {
        JSONObject jObject = new JSONObject(toParse);
        String aJsonString = jObject.getString("ok");

        JSONArray jArray = jObject.getJSONArray("results");

        for (int i = 0; i < jArray.length(); i++) {
            try {
                JSONObject oneObject = jArray.getJSONObject(i);
                // Pulling items from the array
                String oneObjectsItem = oneObject.getString("link");
                return oneObjectsItem;
            } catch (JSONException e) {
                // Oops
            }
        }
    } catch (Exception ex) {
    }
    return "";
}
public String parseJSON(String toParse)
{
    try {
        JSONObject jObject = new JSONObject(toParse);
        String aJsonString = jObject.getString("ok");

        JSONArray jArray = jObject.getJSONArray("results");

        for (int i = 0; i < jArray.length(); i++) {
            try {
                JSONObject oneObject = jArray.getJSONObject(i);
                // Pulling items from the array
                String oneObjectsItem = oneObject.getString("link");
                return oneObjectsItem;
            } catch (JSONException e) {
                // Oops
            }
        }
    } catch (Exception ex) {
    }
    return "";
}