Insertions are done with the insert() method, which returns a Future[LastError].
What does LastError mean?
A LastError is a special document that contains information about the write operation, like the number of documents where updated for example, or the description of the error if an error happened. If the LastError actually indicates an error, the Future will be in Failure state.
Like all the other operations in the GenericCollection trait, you can give any object to insert(), provided that you have a BSONDocumentWriter for its type in the implicit scope. So, with the Person case class:
Update a document
Updates are done with the update() method, which follow the same logic as insert().
You can also specify whether if the update should concern all the documents that match selector.
Remove a document
By default, remove() deletes all the documents that match the selector. You can change this behaviour by setting the firstMatchOnly parameter to true: