获取新插入的文档BSONObjectID

时间:2015-06-02 19:01:18

标签: mongodb scala playframework reactivemongo

我需要返回新插入的对象。我读到我可以生成自己的id,但情况可能并非如此。

def create(repo: String) = Action.async(parse.json) { implicit req =>
    val id = BSONObjectID.generate
    collection(repo).insert($("_id " -> id)).map { last =>
      if(last.ok)
        Ok(Json.toJson($("_id"->id)++$("success"->true)))
      else
        BadRequest($("success"->false))
    }
} 

我正在生成这样的记录:

{
    "_id": {
        "$oid": "556dfb2021c76e3b1c566915"
    },
    "_id ": {
        "$oid": "556dfb1f5f00006100d4a0bc"
    }
}

2 个答案:

答案 0 :(得分:2)

您不应手动生成MongoDB _id,除非您确定它们是唯一的,否则您将不得不在代码中处理duplicated key exception

如果您插入没有_id的新文档,MongoDB将在插入过程中为您生成一个文档。然后,如果您希望返回此_id,则可以请求MongoDB使用新创建的_id来恢复您的文档。

通常,驱动程序会自动为您处理此部分。

答案 1 :(得分:0)

只是错过了点击,我错误地将空间添加到_id,这导致了所有问题