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

标签 java json mongodb shell command-line

我正在努力将数据从 Json 文件导入 Mongodb
我可以在命令行中使用 mongoimport 命令 执行相同的操作。
我探索并尝试了很多但无法使用 java 从 Json 文件导入。

示例.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" } 
    }

感谢您的宝贵时间。 ~象头神~

最佳答案

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

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

并将其赋值给一个变量(String json1),下一步就是解析它,

DBObject dbo = (DBObject) com.mongodb.util.JSON.parse(json1);

将所有dbo放入一个列表中,

List<DBObject> list = new ArrayList<>();
list.add(dbo);

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

new MongoClient().getDB("test").getCollection("collection").insert(list);

编辑:

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

导入是:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

代码会像这样(引用 EDIT 上方的文本):

Document doc = Document.parse(json1);
new MongoClient().getDataBase("db").getCollection("collection").insertOne(doc);

你也可以用列表的方式来做。但是你需要

new MongoClient().getDataBase("db").getCollection("collection").insertMany(list);

但是我觉得这个方案有问题。当您输入时:

db.collection.find()

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

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

这和以前不完全一样。

关于java - 如何使用java从Json文件导入数据到Mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624116/

相关文章:

Java在子类中调用函数或使用主类中的对象

JavaFX TextFlow - 空文本节点不显示空(从相邻文本中窃取字符)

mongodb - first() 返回数组而不是 stdClass 对象 - Laravel 5.3 MongoDB

java - 在 MongoDB 中打开连接的 SocketTimeout

c# - Mongodb项目日期从数值(DateTimeOffset)

java - 使用android中的房间数据库删除保存在文件夹中的照片

java - 整数性能 - x32 与 x64 jvm 相差 30-50 倍?

javascript - 防止空字符串成为数组的一部分

javascript - 在 JavaScript 中按属性过滤 JSON 数据

java - jackson 自定义号码解析