MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Una guida a MongoDB con Java

1. Panoramica

In questo articolo, daremo un'occhiata all'integrazione di MongoDB, un database open source NoSQL molto popolare con un client Java autonomo.

MongoDB è scritto in C++ e ha una serie di solide funzionalità come la riduzione della mappa, il partizionamento automatico, la replica, l'elevata disponibilità ecc.

2. MongoDB

Iniziamo con alcuni punti chiave su MongoDB stesso:

  • Memorizza i dati in documenti simili a JSON che possono avere varie strutture
  • utilizza schemi dinamici, il che significa che possiamo creare record senza predefinire nulla
  • La struttura di un record può essere modificata semplicemente aggiungendo nuovi campi o eliminando quelli esistenti

Il modello di dati sopra menzionato ci dà la possibilità di rappresentare relazioni gerarchiche, di memorizzare facilmente array e altre strutture più complesse.

3. Terminologie

Comprendere i concetti in MongoDB diventa più facile se possiamo confrontarli con strutture di database relazionali.

Vediamo le analogie tra Mongo e un sistema MySQL tradizionale:

  • Tabella in MySQL diventa una Collezione in Mongo
  • Riga diventa un Documento
  • Colonna diventa un Campo
  • Unisciti sono definiti come collegamento e incorporato documenti

Questo è un modo semplicistico per guardare ai concetti fondamentali di MongoDB, ovviamente, ma comunque utile.

Ora, tuffiamoci nell'implementazione per comprendere questo potente database.

4. Dipendenze Maven

Dobbiamo iniziare definendo la dipendenza di un driver Java per MongoDB:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.4.1</version>
</dependency>

Per verificare se è stata rilasciata una nuova versione della libreria, traccia le versioni qui.

5. Utilizzo di MongoDB

Ora, iniziamo a implementare le query Mongo con Java. Seguiremo le operazioni CRUD di base in quanto sono le migliori per iniziare.

5.1. Crea una connessione con MongoClient

Innanzitutto, stabiliamo una connessione a un server MongoDB. Con la versione>=2.10.0, utilizzeremo il MongoClient :

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

E per le versioni precedenti usa Mongo classe:

Mongo mongo = new Mongo("localhost", 27017);

5.2. Connessione a un database

Ora connettiamoci al nostro database. È interessante notare che non è necessario crearne uno. Quando Mongo vede che il database non esiste, lo creerà per noi:

DB database = mongoClient.getDB("myMongoDb");

A volte, per impostazione predefinita, MongoDB viene eseguito in modalità autenticata. In tal caso, dobbiamo autenticarci durante la connessione a un database.

Possiamo farlo come presentato di seguito:

MongoClient mongoClient = new MongoClient();
DB database = mongoClient.getDB("myMongoDb");
boolean auth = database.authenticate("username", "pwd".toCharArray());

5.3. Mostra database esistenti

Mostriamo tutti i database esistenti. Quando vogliamo usare la riga di comando, la sintassi per mostrare i database è simile a MySQL:

show databases;

In Java, mostriamo i database utilizzando lo snippet di seguito:

mongoClient.getDatabaseNames().forEach(System.out::println);

L'output sarà:

local      0.000GB
myMongoDb  0.000GB

Sopra, locale è il database Mongo predefinito.

5.4. Crea una Raccolta

Iniziamo creando una Collezione (equivalente di tabella per MongoDB) per il nostro database. Una volta collegati al nostro database, possiamo creare una Raccolta come:

database.createCollection("customers", null);

Ora, mostriamo tutte le raccolte esistenti per il database corrente:

database.getCollectionNames().forEach(System.out::println);

L'output sarà:

customers

5.5. Salva – Inserisci

Il salva l'operazione ha una semantica di salvataggio o aggiornamento:se un id è presente, esegue un aggiornamento , in caso contrario, esegue un inserimento .

Quando salviamo un nuovo cliente:

DBCollection collection = database.getCollection("customers");
BasicDBObject document = new BasicDBObject();
document.put("name", "Shubham");
document.put("company", "Baeldung");
collection.insert(document);

L'entità verrà inserita in un database:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "Shubham",
    "company" : "Baeldung"
}

Successivamente, esamineremo la stessa operazione:salva – con aggiornamento semantica.

5.6. Salva – Aggiorna

Diamo ora un'occhiata a salva con aggiornamento semantica, operando su un cliente esistente:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "Shubham",
    "company" : "Baeldung"
}

Ora, quando salviamo il cliente esistente – lo aggiorneremo:

BasicDBObject query = new BasicDBObject();
query.put("name", "Shubham");

BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "John");

BasicDBObject updateObject = new BasicDBObject();
updateObject.put("$set", newDocument);

collection.update(query, updateObject);

Il database sarà simile a questo:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "John",
    "company" : "Baeldung"
}

Come puoi vedere, in questo particolare esempio, salva utilizza la semantica di aggiornamento , perché utilizziamo l'oggetto con _id specificato .

5.7. Leggi un documento Da una Raccolta

Cerchiamo un Documento in una Raccolta facendo una query:

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
DBCursor cursor = collection.find(searchQuery);

while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

Mostrerà l'unico Documento abbiamo ormai nella nostra Collezione :

[
    {
      "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
      "name" : "John",
      "company" : "Baeldung"
    }
]

5.8. Elimina un Documento

Andiamo avanti alla nostra ultima operazione CRUD, la cancellazione:

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");

collection.remove(searchQuery);

Con il comando precedente eseguito, il nostro unico Documento verrà rimosso dalla Raccolta .