如何使用java从Json文件导入Mongodb数据

Gan*_*mar 9 java shell command-line json mongodb

我与数据导入奋力Mongodb从一个Json文件中.
我可以在命令行中使用相同的方法mongoimport command.
我探索并尝试了很多,但无法使用java从Json文件导入.

sample.json

    { "test_id" : 1245362, "name" : "ganesh", "age" : "28", "Job" : 
       {"company name" : "company1", "designation" : "SSE" } 
    }

    { "test_id" : 254152, "name" : "Alex", "age" : "26", "Job" :
       {"company name" : "company2", "designation" : "ML" } 
    }
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间.〜Ganesh神〜

Wiz*_*ard 12

假设您可以分别读取JSON字符串.例如,您阅读了第一个JSON文本

{ "test_id" : 1245362, "name" : "ganesh", "age" : "28", "Job" : 
   {"company name" : "company1", "designation" : "SSE" } 
}
Run Code Online (Sandbox Code Playgroud)

并将其分配给变量(String json1),下一步是解析它,

DBObject dbo = (DBObject) com.mongodb.util.JSON.parse(json1);
Run Code Online (Sandbox Code Playgroud)

将所有dbo放入列表中

List<DBObject> list = new ArrayList<>();
list.add(dbo);
Run Code Online (Sandbox Code Playgroud)

然后将它们保存到数据库:

new MongoClient().getDB("test").getCollection("collection").insert(list);
Run Code Online (Sandbox Code Playgroud)

编辑:

在最新的MongoDB版本中,您必须使用Documents而不是DBObject,并且添加对象的方法现在看起来不同.这是一个更新的例子:

进口是:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
Run Code Online (Sandbox Code Playgroud)

代码是这样的(参考编辑上面的文字):

Document doc = Document.parse(json1);
new MongoClient().getDataBase("db").getCollection("collection").insertOne(doc);
Run Code Online (Sandbox Code Playgroud)

你也可以按照列表的方式去做.但是你需要

new MongoClient().getDataBase("db").getCollection("collection").insertMany(list);
Run Code Online (Sandbox Code Playgroud)

但我认为这个解决方案存在问题.键入时:

db.collection.find()
Run Code Online (Sandbox Code Playgroud)

在mongo shell中获取集合中的所有对象,结果如下所示:

{ "_id" : ObjectId("56a0d2ddbc7c512984be5d97"),
    "test_id" : 1245362, "name" : "ganesh", "age" : "28", "Job" :
        { "company name" : "company1", "designation" : "SSE" 
    }
}
Run Code Online (Sandbox Code Playgroud)

这和以前不完全一样.