2015-06-02 3 views
0

Мне нужно вернуть вновь вставленный объект. Я читал, что могу создать свой собственный идентификатор, но это, вероятно, не так.Получить недавно вставленный документ BSONObjectID

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

Вы не должны генерировать MongoDB _id вручную, если вы не знаете наверняка, что они являются уникальными или вам придется иметь дело с duplicated key exception в коде ,

Если вы вставляете новый документ без _id, MongoDB будет генерировать его для вас во время процесса вставки. Затем, если вы хотите вернуть этот _id, вы можете запросить у MongoDB возврат своего документа с помощью только что созданного _id.

Обычно драйверы обрабатывают эту деталь автоматически для вас.

0

Просто пропуская, я добавил пространство по ошибке на _id, и это вызывало все проблемы