저는 Play Framework 2.5.0과 ReactiveMongo를 사용하여 앱을 제작하고 있으며, 대부분의 웹 언어에서 매우 쉽게 할 수있는 많은 시간을 보내고 있습니다. .Bulk insert/Insert Many with Play Framework, ReactiveMongo
많은 문서를 한 번에 삽입하고 있습니다. 이렇게하려면 ReactiveMongo 함수 bulkInsert
을 사용해야합니다.
나는 그러나 그것은 2013 년이고 지금 서명이 내가 찍어 보았습니다 그래서 여기
def bulkInsert(documents: Stream[P.Document], ordered: Boolean, writeConcern: WriteConcern)(implicit ec: ExecutionContext): Future[MultiBulkWriteResult]
에
def bulkInsert[T](enumerator: Enumerator[T])
에서
을 변경, 매우 간단한 예제를 가지고 this google group 발견 이 예제를 사용하고 열거자를 스트림으로 변환하는 방법을 찾으십시오 (어떤 방법으로도 찾지 못했습니다) :
ReactiveMongo의 웹 사이트에서 example :val schemasDocs: Seq[JsObject] = {
jsonSchemas.fields.map {
case (field, value) => Json.obj(field -> value)
}
}
val enumerator = Enumerator.enumerate(schemasDocs)
val schemasStream = Source.fromPublisher(Streams.enumeratorToPublisher(enumerator)) // my attempt to turn enumerator into a Stream
val schemasInsert = {
getCollection("schemas").flatMap(
_.bulkInsert(schemasStream, true)
)
}
는 이제 있습니다 .. Akka, ReactiveMongo에서 자신이 다이빙 찾아 시도하고 JsObjects의 서열에서 JsObjects의 스트림을 생성하는 API 플레이
은 그 때 나는 다른 접근을 시도type mismatch; found : Seq[reactivemongo.play.json.collection.JSONCollection#ImplicitlyDocumentProducer] required: Seq[x$48.ImplicitlyDocumentProducer]
내가 스트리밍하는을 사용하지 않고하지 않을 :
val bulkDocs = schemasDocs.map(implicitly[collection.ImplicitlyDocumentProducer](_))
collection.bulkInsert(ordered=true)(bulkDocs: _*)
나에게 디버그 하드 오류를 제공합니다 두 번째 해결책을 사용하십시오. 제 코드에서 이해할 수없는 것들을 갖고 싶지 않습니다.
화장실을하시기 바랍니다에게 있습니다 k (예 : https://github.com/ReactiveMongo/ReactiveMongo/blob/0.11.x/driver/src/test/scala/BSONCollectionSpec.scala#L72). – cchantep
여전히 같은 오류가 발생합니다. 형식이 일치하지 않습니다. 발견 : Seq [reactivemongo.play.json.collection.JSONCollection # ImplicitlyDocumentProducer] 필수 : Seq [x $ 12.ImplicitlyDocumentProducer], 실제로 이해하지 못합니다. – Daniel
코드가 이해하기에 충분하지 않습니다. – cchantep