【问题标题】:Parse JSON into a MONGODB docment将 JSON 解析为 MONGODB 文档
【发布时间】:2015-05-28 05:53:30
【问题描述】:

我是 JAVAMONGODB 的新手,并且一直在学习这两种技术,以尝试了解这些技术是否能满足我对产品的要求。

我目前陷入无法将 JAVA 中的文档(记录)插入到我的 MONGODB 集合中的问题。

我正在使用新的MONGODB version 3.0

到目前为止的代码

MongoCollection<Document> coll = db.getCollection("Collection");
String json = "{'class':'Class10', 'student':{'name':'Alpha', 'sex':'Female'}, {'name':'Bravo', 'sex':'Male'}}";

我找到了将其转换为 DBObject 类型的代码。

DBObject dbObject = (DBObject)JSON.parse(json);

但我猜MONGODB 的新版本没有插入方法,而是有insertOne method

coll.insertOne() 要求输入为 Document 格式,不接受 DBObject 格式。

coll.insertOne((Document) dbObject);

给出错误

com.mongodb.BasicDBObject cannot be cast to org.bson.Document

有人可以帮助我进行正确的类型转换并给我一个链接,在那里我可以找到并学习相同的内容吗?

问候。

【问题讨论】:

  • 我认为这个coll.insertOne((Document) dbObject); 有问题,你可以在不强制转换Document 的情况下检查这个coll.insertOne(dbObject);,然后插入。
  • 如果你使用 DBCollection 而不是 MongoCollection,你可以使用 insert(DBObject) 就可以了。
  • 嗨 Yogesh,我尝试了你提到的方法,但是 Eclipse 上出现了一个明确的错误,表明存在类型转换错误。根据您的建议进行了更改,我得到的错误是“MongoCollection 类型中的方法 insertOne(Document) 不适用于参数 (DBObject)”
  • 嗨兰吉特,是的。我发现这个链接可以将 JSON 数据转换为 DBObject。但是,成功转换后,我无法将其插入集合中。 Mongo 2.10 版有插入方法,但在 Mongo 3.0 版中没有。在 3.0 中有一个 insertOne 方法,它只接受 Document 格式。

标签: java mongodb


【解决方案1】:

使用 Document 类中定义的静态 parse(String json) 方法。

【讨论】:

  • 但是在解析 JSON 字符串时,抛出的错误是 org.bson.json.JsonParseException: Invalid JSON number
【解决方案2】:
  • 问题是您使用的是较旧的 与 3.0 版本不兼容的版本(BasicDBObject)。

  • 但是有一种方法可以让 2.0 用户使用 BasicDBObject。 getCollection 方法允许客户端指定不同的类 用于表示 BSON 文档。

以下代码必须适合您。

MongoCollection<BasicDBObject> coll = db.getCollection("Collection", BasicDBObject.class);

coll.insertOne(dbObject);

【讨论】:

    【解决方案3】:

    我使用 google gson 将 pojo 转换为 json,这是完美的工作。

    private final MongoCollection<Document> collection;
    
    //my save
        String json = gson.toJson(data);//data is User DTO, just pojo!
        BasicDBObject document = (BasicDBObject) JSON.parse(json);
        collection.insertOne(new Document(document));
    

    Java mongodb驱动版本为3.4.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 2022-01-06
      • 2016-02-08
      • 2013-10-12
      相关资源
      最近更新 更多