2016-08-30 10 views
0

ReactiveMongoで指定された_idフィールドを持つ新しい文書を挿入しようとしています。しかし、私のすべての挿入は、Mongoのデフォルトincremental objectIdで実行されます。挿入中に_idを指定する方法はありますか?ReactiveMongoで指定した_idで文書を追加する

ここに私のコードです。

case class MongoId($oid: String) 

object MongoId { 
    implicit val mongoIdFormat = Json.format[MongoId] 
} 

case class Person(_id: MongoId, name: String) 

object Person { 
    implicit val PersonFormat = Json.format[Person] 
} 

val collection = reactiveMongoApi.database.map(_.collection[JSONCollection]("people")) 

def save(person: Person) = { 
    collection.flatMap(d => d.insert(person)).map(wr => wr.hasErrors match { 
    case true => None 
    case false => Some(person) 
    }) 
} 
+0

ヘルプを得るには再生器を共有する – cchantep

答えて

0

確かに方法があります。 MongoDBに挿入する前に自分でObjectIdを生成する必要があります。以下の例。

case class Person (_id: BSONObjectID, name: String) 

object Person { 
    implicit val PersonFormat = Json.format[Person] 
} 

val p = Person(BSONObjectID.generate, "Mac") 

save(p) 
関連する問題