2012-05-15 19 views
1

我是scala和casbah的新手。我正在嘗試使用casbah創建一個mongo replicaset連接。這是我的代碼。我很確定我的mongo副本設置是正確的。當我通過ruby創建連接時,它效果很好。我在這裏錯過了一些無聊的事 當我GOOGLE了,我得到了這個文件,這是我用作參考。如何使用Casbah創建Mongo replicaset連接?

http://api.mongodb.org/scala/casbah/current/scaladoc/com/mongodb/casbah/MongoConnection $ html的

import com.mongodb.casbah.Imports._ 

object MongoAnalysisDB { 
    def main(args: Array[String]) = { 
    //that connection 
    val addresses = List("127.0.0.1:27018", "127.0.0.1:27019", "127.0.0.1:27020") 
    val mongoConn = MongoConnection(replicaSetSeeds: addresses) 
    val mongoDB = mongoConn("vimana-sandbox-dup") 
    val mongoColl = mongoConn("vimana-sandbox-dup")("utilization.metrics.cycledowntime") 


    //that query 
    val loadEvent = MongoDBObject("period" -> "PT1H") 
    val cursor = mongoColl.find(loadEvent) 
    val mtcevent = mongoColl.findOne(loadEvent) 

    //that document 
    println(mtcevent) 
    } 
} 

我碰到下面的錯誤。

[info] Compiling 1 Scala source to /home/deepak/scala-mongo-oplog-watcher/target/scala-2.9.1/classes... 
[error] /home/deepak/scala-mongo-oplog-watcher/src/main/scala/reader.scala:6: ')' expected but '(' found. 
[error]  val mongoConn = MongoConnection(replicaSetSeeds: List("127.0.0.1:27018", "127.0.0.1:27019", "127.0.0.1:27020")) 
[error]              ^
[error] /home/deepak/scala-mongo-oplog-watcher/src/main/scala/reader.scala:6: ';' expected but ')' found. 
[error]  val mongoConn = MongoConnection(replicaSetSeeds: List("127.0.0.1:27018", "127.0.0.1:27019", "127.0.0.1:27020")) 
[error]                             ^
[error] two errors found 
[error] {file:/home/deepak/scala-mongo-oplog-watcher/}default-b16d47/compile:compile: Compilation failed 
+1

您是否嘗試過一個包裹裏面ServerAddress你的ip字符串? – bjartek

回答

3

將ip字符串和端口換成ServerAddress工作。

import com.mongodb._ 
import com.mongodb.casbah.Imports._ 

object MongoAnalysisDB { 
    def main(args: Array[String]) = { 
    //that connection 
    val addresses = List(new ServerAddress("127.0.0.1" , 27018), new ServerAddress("127.0.0.1" , 27019), new ServerAddress("127.0.0.1" , 27020)) 
    val mongoConn = MongoConnection(addresses) 
    val mongoDB = mongoConn("vimana-sandbox-dup") 
    val mongoColl = mongoConn("vimana-sandbox-dup")("utilization.metrics.cycledowntime") 


    //that query 
    val loadEvent = MongoDBObject("period" -> "PT1H") 
    val cursor = mongoColl.find(loadEvent) 
    val mtcevent = mongoColl.findOne(loadEvent) 

    //that document 
    println(mtcevent) 
    } 
} 

參見: http://mongodb.github.io/casbah/3.1/reference/connecting/#connecting-to-replicasets-mongos

1

您也可以使用MongoClientURI

使用RS連接
val mongoClient = MongoClient(MongoClientURI("mongodb://localhost:27018,localhost:27019,localhost:27020")) 
相關問題