如何在java中更新很多文档? MongoDB 3.5驱动程序

时间:2017-11-01 08:13:01

标签: java json mongodb

我想更新来自API的json数据并在MongoDB中更新它,但我不知道该怎么做。我需要更新而不是Insert,但不知道是否可以更新数组。 这是我的代码:

public static void getObject() throws Exception {
     String api = "http://welcometoastana.kz/api/v1/places/events";
     String dbURI = 
"mongodb://api:Bottle23Printer@10.10.30.14:27017/smartdata";
     MongoClient mongo = new MongoClient(new MongoClientURI(dbURI));
     MongoDatabase db = mongo.getDatabase("smartdata");


     URL url = new URL(api);
     HttpURLConnection conn = (HttpURLConnection) url.openConnection();
     conn.setRequestProperty("Accept-Language", "en");
     Scanner scan = new Scanner(url.openStream());
     String str = new String();
     while (scan.hasNext()) 
        str += scan.nextLine();
    scan.close();
    //getting real json arrays
    JSONObject obje1 = new JSONObject(str);
    JSONArray jArray = obje1.getJSONArray("places");
    for (int i = 0; i<jArray.length(); i++) {
        JSONObject object3 = jArray.getJSONObject(i);

        int id = object3.getInt("id");
        String slug = object3.getString("slug");
        String name = object3.getString("name");
        String summary = object3.getString("summary");
        String phone = object3.getString("phone");
        String address = object3.getString("address");
        String description = object3.getString("description");
        String url1 = object3.getString("url");
        String url_ticketon = object3.getString("url_ticketon");

        System.out.println("id = "+id+"\n slug = "+slug+"\n name = "+name+
                "\n summary = "+summary+"\n phone = "+phone+
                "\n address = "+address+"\n description = "+description+"\n"+
                "\n url = "+url1+"\n url_ticketon = "+url_ticketon);

        List<Document> writes = new ArrayList<>();
        MongoCollection<Document> sobt = db.getCollection("sobt");

        Document d2 = new Document("id", id);
        d2.append("slug", slug);
        d2.append("name", name);
        d2.append("summary", summary);

        writes.add(d2);
        sobt.insertMany(writes);

1 个答案:

答案 0 :(得分:1)

    Document filter = new Document("id", id);

    Document content = new Document();
    contend.append("slug", slug);
    content.append("name", name);
    content.append("summary", summary);

    Document update = new Document("$set", content);

    sobt.update(filter, update);