Primeros pasos con mongodb-java

Instalación o configuración

Requisito previo

Un servidor MongoDB en ejecución, más detalles sobre eso [aquí] (https://www.wikiod.com/es/mongodb/primeros-pasos-con-mongodb).

Configuración de un proyecto Java

El controlador Java de MongoDB se proporciona como un archivo JAR y se puede incluir en un proyecto como cualquier otro JAR. Por ejemplo:

  • Maven: agregue una entrada a la sección <dependencias> de su pom.xml.
org.mongodb mongo-java-controlador 3.4.2
  • Gradle: agrega la siguiente dependencia a tu build.gradle

compila 'org.mongodb:mongo-java-driver:3.4.2'

  • Inclusión manual: descargue el archivo JAR desde aquí y agréguelo al classpath de su proyecto.

Nota: la versión que se muestra en los ejemplos anteriores es la última versión estable en el momento de escribir este artículo, pero puede elegir cualquier versión disponible [aquí](http://search.maven.org/#search%7Cga%7C1%7Corg.mongodb %3A%3Amongo-java-driver).

Uso del controlador Java de MongoDB

Vamos a crear un MongoClient, la invocación más simple es:

MongoClient mongoClient = new MongoClient(new ServerAddress("localhost", 27017));

Esto supone que el servidor MongoDB se ejecuta en localhost en el puerto predeterminado y que no es seguro. Existen numerosas variantes de esto para el acceso autenticado, opciones de conexión personalizadas, conexión a conjuntos de réplicas y clústeres fragmentados, todo cubierto en detalle en los [documentos del controlador Java de Mongo DB] (http://mongodb.github.io/mongo-java-driver/ 3.4/driver/tutorials/connect-to-mongodb/).

Ahora que estamos conectados, creemos una base de datos y una colección. MongoDB crea implícitamente una colección cuando se guarda el primer documento, así que hagámoslo:

MongoDatabase database = mongoClient.getDatabase("starter");
MongoCollection<Document> collection = database.getCollection("superheroes");
Document document = new Document("name", "Superman");
collection.insertOne(document);

Nota: puede [crear explícitamente una colección] (http://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/databases-collections/) pero el uso anterior es más común y ciertamente encaja mejor con un tema de ‘primeros pasos’.

Ahora veamos si podemos encontrar el documento que creamos:

FindIterable<Document> documents = purchases.find(Filters.eq("name", "Superman"));
for (Document found : documents) {
    System.out.println(found.toJson());
}

El código anterior generará lo siguiente (el campo _id es la clave de documento generada automáticamente por MongoDB):

Documento encontrado: { “_id” : { “$oid” : “5981bd586d47c203904a9cf9” }, “name” : “Superman” }

Ahora que hemos verificado que creamos correctamente un documento, eliminémoslo:

DeleteResult deleteResult = purchases.deleteOne(Filters.eq("name", "Superman"));
System.out.println(String.format("Deleted %s document(s)", deleteResult.getDeletedCount()));

El código anterior generará lo siguiente:

Borrado 1 documento(s)

Ejemplo Completo

Juntando las distintas piezas obtenemos:

import com.google.common.collect.Lists;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;

import java.util.List;

public class IntroducingTheMongoDBJavaDriver {

    public static void main(String... args) throws Exception {
        MongoClient mongoClient = new MongoClient(new ServerAddress("localhost", 27017));

        MongoCollection<Document> superheroes = mongoClient.getDatabase("starter").getCollection("superheroes");

        Document document = new Document("name", "Superman");
        superheroes.insertOne(document);

        FindIterable<Document> documents = superheroes.find(Filters.eq("name", "Superman"));
        for (Document found : documents) {
            System.out.println(String.format("Found document: %s", found.toJson()));
        }

        DeleteResult deleteResult = superheroes.deleteOne(Filters.eq("name", "Superman"));
        System.out.println(String.format("Deleted %s document(s)", deleteResult.getDeletedCount()));

        long count = superheroes.count();
        System.out.println(String.format("Number of superheroes: %s", count));
    }
}