From the perspective of developers, when a program needs to interact with a MongoDB instance, they need to use the respective client APIs for their specific platforms. The trouble with doing this is that we need to write a lot of boilerplate code, and it is not necessarily object-oriented. For instance, we have a class called Person
with various attributes such as name
, age
, and address
. The corresponding JSON document too shares a similar structure to this Person
class as follows:
{ name:"…", age:.., address:{lineOne:"…", …} }
However, to store this document, we need to convert the Person
class to a DBObject
, which is a map with key and value pairs. What is really desired is to let us persist this Person
class itself as an object in the database, without having to convert it to DBObject
.
Also, some of the operations such as searching by a particular field of a document, saving an entity, deleting an entity, and searching by ID are pretty common, and...