zoukankan      html  css  js  c++  java
  • MongoDB 将Json数据直接写入MongoDB的方法

    Json转Bson

    MongoDB中是以Bson数据格式进行存储的,Json字符串没有办法直接写入MongoDB 可以将Json字符串转换成DBObject或者Document,然后写入MongoDB

    1、将Json字符转换成com.mongodb.DBObject(准确的说是BasicDBObject)

    scala版本

    import com.mongodb.DBObject
    import com.mongodb.casbah.{MongoClient, MongoCollection}
    import com.mongodb.util.JSON
    
    // 构造一个Json字符串
    val json = s"""{
               |  "school_code" : "${school_code}",
               |  "school_name" : "${school_name}",
               |  "teacher_idcard" : "${teacher_idcard}",
               |  "teacher_name" : "${teacher_name}"
               |}
               |""".stripMargin
    
    val collection: MongoCollection = MongoClient("10.4.120.83")("dbName")("collectionName")
    
    val bson: DBObject = JSON.parse(json).asInstanceOf[DBObject]
    
    collection.insert(bson) // mongodb casbah的写法

    java版本

    import com.mongodb.MongoClient;
    import com.mongodb.DBObject;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.util.JSON;
    
    
    // 构造一个Json字符串
    String json = " {" +
                    " 'school_code' : '111111', " +
                    " 'school_name' : '汉东政法大学', " +
                    " 'teacher_idcard' : '0000001', " +
                    " 'teacher_name' : '高育良' " +
                    " } ";
    
    MongoClient mongoClient = new MongoClient("10.4.120.83", 27017);
    
    MongoDatabase database = mongoClient.getDatabase("dbName");
    
    MongoCollection<DBObject> collection = database.getCollection("collectionName", DBObject.class);    
    
    DBObject bson = (DBObject)JSON.parse(json);
    
    collection.insertOne(bson);

    2、将字符串转换成org.bson.Document

    scala版本

    import org.bson.Document
    import com.mongodb.casbah.{MongoClient, MongoCollection}
    import com.mongodb.util.JSON;
    
    // 构造一个Json字符串
    val json = s"""{
               |  "school_code" : "${school_code}",
               |  "school_name" : "${school_name}",
               |  "teacher_idcard" : "${teacher_idcard}",
               |  "teacher_name" : "${teacher_name}"
               |}
               |""".stripMargin
    
    
    val document:Document = Document.parse(json)
    
    // 注意!com.mongodb.casbah.MongoCollection只支持写DBObject的子类,
    // 不支持写入Document类的对象,可以使用com.mongodb.client.MongoCollection
    // 写入Document类的对象,这里能写入是因为用了自定义的隐式转换函数,将
    // Document转换成了DBObject
    
    // 自定义的隐式转换函数
    implicit def document2DBObject(doc: Document): DBObject = JSON.parse(doc.toJson).asInstanceOf[DBObject]
    
    val collection: MongoCollection = MongoClient("10.4.120.83")("dbName")("collectionName")
    
    collection.insert(document)

    Java版本

    import org.bson.Document;
    import com.mongodb.MongoClient;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    
    // 构造一个Json字符串
    String json = " {" +
                    " 'school_code' : '111111', " +
                    " 'school_name' : '汉东政法大学', " +
                    " 'teacher_idcard' : '0000001', " +
                    " 'teacher_name' : '高育良' " +
                    " } ";
    
    MongoClient mongoClient = new MongoClient("10.4.120.83", 27017);
    
    MongoDatabase database = mongoClient.getDatabase("dbName");
    
    MongoCollection<Document> collection = database.getCollection("collectionName");  
    
    Document document = Document.parse(json);
    
    collection.insertOne(document );
  • 相关阅读:
    VC6.0 error LNK2001: unresolved external symbol _main解决办法
    C++中数字与字符串之间的转换(使用CString.Format或者sprintf)
    C++内存管理(超长)
    Flash, Flex, Air, Flashplayer之间的相互关系是什么?
    《KVM虚拟化技术实战和原理解析》读书笔记(十几篇)
    HNCU1323:算法2-1:集合union (线性表)
    Delphi XE7下如何创建一个Android模拟器调试
    DelphiXE Android的所有权限按照分类总结说明
    DelphiXE8怎么使用调试模式(朱建强)
    C++静态库中使用_declspec(dllexport) 不能导出函数的问题
  • 原文地址:https://www.cnblogs.com/rinack/p/7155175.html
Copyright © 2011-2022 走看看