如何在java中更新任何文档?MongoDB 3.5驱动程序
我想更新一个来自API的json数据,并在MongoDB中进行更新,但我不知道该怎么做。我需要更新而不是插入,但不知道是否可以更新数组。 这是我的密码:如何在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.
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);