저는이 스칼라 세계에서 처음이에요. 누군가 나를 도울 수 있다면 감사 할 것입니다. 그래서 MongoDB 스칼라 드라이버를 사용하여 파일을 mongodb 데이터베이스에 저장하는 스칼라 응용 프로그램을 빌드하고 있습니다. 이전에 Casbah를 사용했지만 mongodb 공식 웹 사이트에서 레거시 드라이버이며 프로젝트가 막 시작되었으므로 공식 드라이버로 이동하기로 결정했습니다.옵저버 패턴을 사용하여 쿼리의 값을 반환하는 방법
그래서 내 응용 프로그램은 ID가 들어있는 Object를 저장하고이 ID는 "Sequences"라는 MongoDB의 콜렉션에옵니다. 이 클래스의 객체를 저장하고 싶을 때마다, 시퀀스의 마지막 id를 먼저 가져오고 하나씩 증가시킵니다. 내가 카스바, 작업을 수행하는 데 사용이 코드를 사용하고 있었다
: 및
def getSequenceId(seqName: String): Int = {
val query = MongoDBObject("seq_id" -> seqName);
val result = MongoFactory.SequenceCollection
.findAndModify(query, $inc("nextId" -> 1))
val nbr = result.get("nextId");
return nbr.toString.toDouble.toInt;
}
문제는 MongoDB를 스칼라 드라이버, 당신이 그것에 대해 관찰 패턴을 사용해야한다는 것입니다을 나는 조금 혼란 스러워요 .
지금까지,이 같은 코드를 만들어 관리 :
def getSequenceId(seqName: String): Int = {
val query = new BsonDocument("seq_id", new BsonString(seqName))
val resultado = NewMongo.SequenceCollection.findOneAndUpdate(query,inc("nextId",1)).collect()
.subscribe(new Observer[Seq[Document]] {
override def onNext(result: Seq[Document]): Unit = println(s"UPDATED ${result(0)}")
override def onError(e: Throwable): Unit = println(s"Failed due to $e")
override def onComplete(): Unit = println("Completed")
})
}
문제는이 옵저버 패턴을 사용하는 나의 처음 내가가 수정 된 문서를 가져 오는 방법을 모르겠입니다 마지막 이드를 가져와. 나는 그것에 관하여 많은 웹 사이트에서 수색하고 응답을 찾아 낼 수 없었다. 대부분의 경우 나는 Casbah만을위한 해결책을 발견했습니다. 당신은 거기 mongo
에 대한 ReactiveMongo .IT의 단순히 최고의 스칼라 드라이버를 사용해야합니다
감사
안녕하세요, 망각, 회신 해 주셔서 감사합니다. 내 생각은 공식 MongoDB 드라이버를 사용하는 것이었다. 그것이 내가 질문 한 이유입니다. 이미 다른 라이브러리를 사용하여 답변을 얻었습니다. –