zoukankan      html  css  js  c++  java
  • 10.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 );
  • 相关阅读:
    jmeter学习笔记(3)-jmeter结合fiddler
    jmeter学习笔记(2)—http信息头管理器+断言
    requests接口自动化9-共享session和传递cookie
    djangorestframework学习1-通过HyperlinkedModelSerializer,ModelViewSet,routers编写第一个接口
    requests接口自动化8-传递数据为xml形式的post请求:data
    requests接口自动化7-Multi/form-data文件上传形式的post请求:files
    requests接口自动化6-Body里json格式数据形式的post请求:json
    requests接口自动化5-表单参数形式的post请求:data
    requests接口自动化4-登录后才能访问的get请求,需共享cookie
    requests接口自动化3-url里带参数的get请求:params
  • 原文地址:https://www.cnblogs.com/sharpest/p/7833876.html
Copyright © 2011-2022 走看看