2016-05-04 10 views
1

Ich habe die unten JSON string,Scala Code JSON-String einzufügen DB Mongo

{"card_id" : 75893645814809,"cust_id": 1008,"card_info": {"card_type" : "Travel Card","credit_limit": 126839},"card_dates" : [{"date":"1997-09-09" },{"date":"2007-09-07" }]} 

und ich möchte dies MongoDB einzufügen. Kann mir jemand dabei helfen?

Vielen Dank im Voraus

+0

Was haben Sie versucht und wo stecken Sie fest? Das sieht derzeit nach einer "Gib den Code" -Frage aus. Es ist im Wesentlichen zwei Teile - JSON-Parsing und MongoDB-Integration - welche von diesen sind Ihr Problem? –

+0

Welchen Treiber verwenden Sie? 'Casbah' sollte für diese Art von Arbeit gut genug sein. –

+0

@Archetpal: Ich plane, DBObject für die JSON-Zeichenfolge zu erstellen und diese dann in mongoDB einzufügen. ist es in Ordnung ... oder es wird besser sein, Casbah-Treiber zu verwenden ..? –

Antwort

0

Mit Casbah ist es ziemlich einfach. Das hat für mich funktioniert. Beachten Sie, dass die Verwendung eines Puffers nicht erforderlich ist, aber für den Fall, dass Sie eine große Menge an Objekten einfügen, wird die Leistung erheblich verbessert, wenn Sie sie in Stapeln senden.

import com.mongodb.DBObject 
import com.mongodb.casbah.MongoClient 
import com.mongodb.casbah.MongoClientURI 
import com.mongodb.util.JSON 

val jsonString = """{"card_id" : 75893645814809,"cust_id": 1008,"card_info": {"card_type" : "Travel Card","credit_limit": 126839},"card_dates" : [{"date":"1997-09-09" },{"date":"2007-09-07" }]}""" 
val dbObject: DBObject = JSON.parse(jsonString).asInstanceOf[DBObject] 
val mongo = MongoClient(MongoClientURI("mongodb://127.0.0.1:27017")) 
val buffer = new java.util.ArrayList[DBObject]() 
buffer.add(dbObject) 
mongo.getDB("yourDBName").getCollection("yourCollectionName").insert(buffer) 
buffer.clear() 
+0

Dieser Code verwendet Java-Klassen in Casbah nicht wirklich ein Scala-Code? Haben Sie eine Scala-Version dieses Codes? Ich habe die Scala-Implementierung für JSON.parse nicht gefunden. Auf der Casbah-Scala-Dokumentationsseite heißt es: "Im Allgemeinen sollten Sie nur die Namespaces org.mongodb.scala und org.bson in Ihrem Code verwenden. Sie sollten nicht aus dem Namespace com.mongodb importieren, da entsprechende Aliase und Begleitobjekte vorhanden sind im Scala-Treiber. " Also bedeutet dies, dass es eine Scala-Version der oben verwendeten Java-Klassen geben sollte? – anargund

0

Zum Beispiel:

val mongo_url = MongoClientURI("mongo://...") 
val mongoClient: MongoClient = MongoClient(mongo_url) 
val db = mongoClient("radar") 
val coll = db("job_history") 
val job = MongoDBObject("name"-> spark, "status"-> "success") 
coll.insert(job) 
coll.find().foreach(println) 

Die Ausgabe wird wie folgt aus:

{ "_id": { "$ oid": "5984b745a63eeeacbcbd301d"}, "id": 22 " name ":" shenrf22 "}