2015-12-13 4 views
1

Я пытаюсь сохранить документ в mongodb 3.0.7 с помощью scala 2.11.7 после быстрого тура: http://mongodb.github.io/mongo-scala-driver/1.0/getting-started/quick-tour/ Но я запускаю пример и ничего не происходит. База данных, коллекция и документ не создаются.Mongodb scala driver не вставляетOne document

def main(args: Array[String]) { 
    println("Start") 
    val mongoClient: MongoClient = MongoClient() 
    val database: MongoDatabase = mongoClient.getDatabase("mydb") 
    val collection: MongoCollection[Document] = database.getCollection("test"); 
    val doc: Document = Document("_id" -> 0, "name" -> "MongoDB", "type" -> "database", 
     "count" -> 1, "info" -> Document("x" -> 203, "y" -> 102)) 
    val observable: Observable[Completed] = collection.insertOne(doc) 
    observable.subscribe(new Observer[Completed] {  
     override def onNext(result: Completed): Unit = println("Inserted") 
     override def onError(e: Throwable): Unit = println("Failed") 
     override def onComplete(): Unit = println("Completed") 
    }) 

    mongoClient.close() 
    println("End") 
    } 

консоли:

Start 
dic 13, 2015 3:05:16 PM com.mongodb.diagnostics.logging.JULLogger log 
INFORMACIÓN: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} 
dic 13, 2015 3:05:16 PM com.mongodb.diagnostics.logging.JULLogger log 
INFORMACIÓN: Opened connection [connectionId{localValue:1, serverValue:6}] to localhost:27017 
dic 13, 2015 3:05:16 PM com.mongodb.diagnostics.logging.JULLogger log 
INFORMACIÓN: Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 0, 7]}, minWireVersion=0, maxWireVersion=3, electionId=null, maxDocumentSize=16777216, roundTripTimeNanos=893710} 
End 

Чего не хватает?

ответ

2

Я думаю, что mongoClient.close() вызывается до завершения «Наблюдаемого». Мне интересно, как вы могли бы решить это с элегантным способом. Но в отношении этого не является реальной практикой, и я думаю, что вы просто проверяете некоторые. Вы можете поместить Console.readLine() до mongoClient.close, поэтому, когда вы увидите Inserted, вы можете нажать любую клавишу, и приложение закончится.

def main(args: Array[String]) { 
    println("Start") 
    val mongoClient: MongoClient = MongoClient() 
    val database: MongoDatabase = mongoClient.getDatabase("mydb") 
    val collection: MongoCollection[Document] = database.getCollection("test"); 
    val doc: Document = Document("_id" -> 0, "name" -> "MongoDB", "type" -> "database", 
     "count" -> 1, "info" -> Document("x" -> 203, "y" -> 102)) 
    val observable: Observable[Completed] = collection.insertOne(doc) 
    observable.subscribe(new Observer[Completed] {  
     override def onNext(result: Completed): Unit = println("Inserted") 
     override def onError(e: Throwable): Unit = println("Failed") 
     override def onComplete(): Unit = println("Completed") 
    }) 
    scala.Console.readLine() 
    mongoClient.close() 
    println("End") 
    } 
+0

К сожалению, никаких ключей нет. Введите только ключ ввода. – salc2