2017-06-28 6 views
0

私は問題を抱えています。私はmongoと通信しようとしているscala mavenプロジェクトを作成しました。私のプロジェクトは成功裏にビルドされています。プロジェクトを実行してもエラーは発生しませんが、mongodbにデータがまだ挿入されていません。mongodb with scala mavenプロジェクト

mongo-cliで手動でデータを挿入すると、コードで読み取ることができますが、単一のレコードを挿入することさえできません。 私が間違いを犯している場所を見つけるのを手伝ってください。 マイMongoのバージョンは3.2.10

App.scala

package com.assignment.scala 

import org.mongodb.scala._ 
import org.mongodb.scala.model.Aggregates._ 
import org.mongodb.scala.model.Filters._ 
import org.mongodb.scala.model.Projections._ 
import org.mongodb.scala.model.Sorts._ 
import org.mongodb.scala.model.Updates._ 
import org.mongodb.scala.model._ 

/** 
* @author ${user.name} 
*/ 
object App { 

    def main(args: Array[String]) { 
    println("Calling insertDoc==") 
    insertDoc() 
    } 

    def insertDoc() = { 
    val mongoClient = MongoClient() 
    val database = mongoClient.getDatabase("assignment") 
    val collection = database.getCollection("links") 

    println("collection find : " + collection.find()) 
    collection.find().subscribe(
    (user: Document) => println("document------------"+user.toJson()),  
    (error: Throwable) => println(s"Query failed: ${error.getMessage}"), 
() => println("Done")) 

    collection.drop() 

    val bufferedSource = io.Source.fromFile("/home/impadmin/ServiceSource/ml-latest-small/links.csv") 
    var firstLine = List[String](); 
    var docList = List[Document](); 
    for ((line,count) <- bufferedSource.getLines.zipWithIndex) { 
     val cols = line.split(",").map(_.trim) 
     if (firstLine.size <= 0 && cols.length > 0) { 
     firstLine = cols.toList; 
     } else { 
     var doc: Document = Document("_id" -> count) 
     for ((a, b) <- firstLine zip cols) { 
      doC++= Document(a -> b) 
     } 
     docList = docList :+ doc 
     collection.insertOne(doc) 
     } 
    } 

    val doc3 = Document("name" -> "MongoDB", "type" -> "database", 
     "count" -> 1, "info" -> Document("x" -> 203, "y" -> 102)) 

    collection.insertOne(doc) 
    collection.find().subscribe((doc1: Document) => println(doc1.toJson()), 
    (e: Throwable) => println(s"There was an error: $e")) 
    } 
} 
+0

なぜあなたは 'doc3'を作成し、それを使用することはありませんか? – jwvh

+0

doc3も挿入しようとしましたが、挿入されていません。私はmongoが読み取り専用操作をサポートしていますが、コレクションの挿入や削除はサポートしていないと思います。 –

答えて

0

は、それが使用して働いている購読:

val insertObservable1: Observable[Completed] =    collection.insertMany(docList); 
      val latch1 = new CountDownLatch(1) 

      insertObservable1.subscribe(new Observer[Completed] { 

       override def onError(e: Throwable): Unit = { 
       println("Error1") 
       e.printStackTrace() 
       } 

       override def onSubscribe(subscription: Subscription): Unit = { 
       subscription.request(java.lang.Long.MAX_VALUE) 
       println("inserting1-------------") 
       } 

       override def onComplete(): Unit = { 
       println("Completed1") 
       latch1.countDown() 
       } 

       override def onNext(result: Completed): Unit = { 
       println("Next1-----------") 
       } 

      }) 
      latch1.await() 
      } 
     }) 
関連する問題