【问题标题】:add document with ReactiveMongo with specified _id使用指定 _id 的 ReactiveMongo 添加文档
【发布时间】:2016-11-15 16:56:52
【问题描述】:

我正在尝试插入一个带有在 ReactiveMongo 中指定的 _id 字段的新文档。但是我所有的插入都是使用 Mongo 默认增量 objectId 执行的。有没有办法在插入期间指定_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)
  })
}

【问题讨论】:

  • 分享一个复制者以获得帮助

标签: mongodb scala reactivemongo play-reactivemongo


【解决方案1】:

当然有办法。在插入 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2018-06-02
    相关资源
    最近更新 更多