如何将新对象插入 Mongo 并获取_id
插入的文档?
期望的行为:
val _id: String = coll.insert(someObj)
// _id = 插入文档的“_id”
你不必寻找它。当您插入一个新对象时,它的 ID 会在客户端生成,这意味着您在发送之前已经知道它。
从这里:http ://docs.mongodb.org/manual/reference/object-id/
ObjectId 是一个 12 字节的 BSON 类型,使用以下方法构造:
一个 4 字节的值,表示自 Unix 纪元以来的秒数,一个 3 字节的机器标识符,一个 2 字节的进程 ID 和一个 3 字节的计数器,以随机值开头。
因此,当您请求插入新文档时,您将已经指定它。通常你要么使用现有的 ID,要么使用 BSONObjectID.generate 生成一个新的 ID。
这是使用自定义类进行映射的快速草稿(在此示例中,我使用的是 reactivemongo,而不是 casbah):
case class Account(
id: Option[BSONObjectID],
firstName: String,
lastName: String)
然后你在你的作家中做以下事情:
implicit object AccountBSONWriter extends BSONDocumentWriter[Account] {
def write(account: Account): BSONDocument =
BSONDocument(
"_id" -> account.id.getOrElse(BSONObjectID.generate),
"first_name" -> account.firstName,
"last_name" -> account.lastName)
}