2016-08-30 4 views
0

Я пытаюсь вставить новый документ с полем _id, указанным в ReactiveMongo. Но все мои вставки выполняются с инкрементным объектом Mongo defaultId. Есть ли способ указать _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

Уверен, что есть способ. Вам необходимо сгенерировать ObjectId перед вставкой в ​​MongoDB. Пример ниже.

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

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

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

save(p)