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);

  如果你对MongoDB里面的文档存储格式弄昏了头,比如什么DBObject啊,什么Document啊,内部不就是BSON吗,有啥区别啊,你可以参考我的 这篇博客

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值