私は、Play Framework 2.5.0とReactiveMongoを使用してアプリケーションを構築しています。私は、ほとんどのWeb言語では非常に簡単なことに取り組んでいます。一括挿入/挿入多くの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)
)
}
は、今私は...アッカ、ReactiveMongoで自分がダイビング見つけて試してみて、JsObjectsの配列からJsObjectsのストリームを作成するためのAPIを再生
は、その後、私は別のアプローチを試してみましたval bulkDocs = schemasDocs.map(implicitly[collection.ImplicitlyDocumentProducer](_))
collection.bulkInsert(ordered=true)(bulkDocs: _*)
は私のハードデバッグにあるエラーを与える:
type mismatch; found : Seq[reactivemongo.play.json.collection.JSONCollection#ImplicitlyDocumentProducer] required: Seq[x$48.ImplicitlyDocumentProducer]
私はむしろストリームAを使用していないだろう2番目のソリューションを使用してください。私のコードで理解できないものは好きではありません。
トイレを持ってしてくださいにありk(例:https://github.com/ReactiveMongo/ReactiveMongo/blob/0.11.x/driver/src/test/scala/BSONCollectionSpec.scala#L72)。 – cchantep
私はまだ同じエラーが発生します:タイプの不一致。見つかった:Seq [reactmongo.play.json.collection.JSONCollection#ImplicitlyDocumentProducer]必須:Seq [x $ 12.ImplicitlyDocumentProducer]、私は実際にそれを取得しません – Daniel
あなたのコードはそれを理解するのに十分ではありません – cchantep