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

如何在java中更新任何文档?MongoDB 3.5驱动程序,java,json,mongodb,Java,Json,Mongodb,我想更新一个来自API的json数据,并在MongoDB中进行更新,但我不知道该怎么做。我需要更新而不是插入,但不知道是否可以更新数组。 这是我的密码: public static void getObject() throws Exception { String api = "http://welcometoastana.kz/api/v1/places/events"; String dbURI = "mongodb://api:Bottle23Printer@10.

我想更新一个来自API的json数据,并在MongoDB中进行更新,但我不知道该怎么做。我需要更新而不是插入,但不知道是否可以更新数组。 这是我的密码:

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);
public static void getObject()引发异常{
字符串api=”http://welcometoastana.kz/api/v1/places/events";
字符串dbURI=
"mongodb://api:Bottle23Printer@10.10.30.14:27017/smartdata”;
MongoClient mongo=新MongoClient(新MongoClient(dbURI));
MongoDatabase db=mongo.getDatabase(“smartdata”);
URL=新的URL(api);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestProperty(“接受语言”、“en”);
Scanner scan=新扫描仪(url.openStream());
String str=新字符串();
while(scan.hasNext())
str+=scan.nextLine();
scan.close();
//获取真正的json数组
JSONObject obje1=新JSONObject(str);
JSONArray jArray=obje1.getJSONArray(“位置”);

对于(int i=0;i您的意思是“upert”而不是“insert”?请参阅。指向核心文档,但相同的基本用法适用于所有驱动程序。
insertMany()使用相同的底层“批量API”)
还有一个问题,如果我添加了4个以上的变量,console会给出一个错误,因为找不到类java.net.URL的编解码器。如何解决这个问题?它与“4个以上的变量”无关。这是因为您的一个变量是类java.net.URL的对象,mongo不知道该类是什么。只需使用
toString()
并将变量作为字符串保存到您的数据库中。我不知道应该更改哪些值,我真的很困惑,您能指定或给出一个如何更改的示例吗?
    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);