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

Come eliminare i documenti MongoDB importando un file

A partire da mongoimport versione 100.0.0, puoi eliminare documenti in MongoDB in base a un file importato. Per fare ciò, usa delete modalità.

Quando usi delete modalità, se un documento importato ha lo stesso _id valore come uno esistente nella raccolta in cui stai importando, il documento esistente verrà eliminato.

Puoi anche specificare un altro campo o campi (diversi da _id campo) come campo corrispondente, se richiesto.

Esempio

Supponiamo di avere una collezione chiamata pets che contengono i seguenti documenti:

db.pets.find()

Risultato:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

E abbiamo il seguente file JSON chiamato pets.json :

{"_id":1,"name":"Wag","type":"Dog"}
{"_id":2,"name":"Fluffy","type":"Cat","weight":10}
{"_id":9,"name":"Hop","type":"Kangaroo","weight":60}

Il comando seguente importa il file JSON utilizzando delete modalità:

mongoimport --db=PetHotel --collection=pets --mode=delete --file=data/pets.json

L'esecuzione di questo comando elimina tutti i documenti corrispondenti nella raccolta.

Controlla i risultati

Diamo un'occhiata alla collezione ora.

db.pets.find()

Risultato:

{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

Possiamo vedere che i primi 2 documenti sono stati cancellati. Sono stati eliminati perché il loro _id i valori corrispondevano a _id valori nei documenti esistenti. Questo nonostante altri dettagli non corrispondano necessariamente (come nel documento 2).

Inoltre, il nostro file importato aveva un documento con un _id di 9 ma non c'era alcun documento corrispondente, quindi nulla è stato cancellato per quello.

Cambia il/i campo/i Upsert

Puoi usare il --upsertFields parametro per specificare un campo diverso da _id per cui confrontarsi. Quando si utilizzano più campi con questo parametro, passarli come un elenco separato da virgole.

Supponiamo di avere un altro file JSON chiamato pets2.json e si presenta così:

{ "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "name" : "Bubbles", "type" : "Fish", "weight" : 3 }

Questo documento non include il _id campo, quindi dovremmo confrontare altri campi che identificano in modo univoco ogni documento. In questo caso potremmo usare il name e type campi.

Possiamo quindi utilizzare il seguente mongoimport comando:

mongoimport --db=PetHotel --collection=pets --mode=delete --upsertFields=name,type --file=data/pets2.json

Ora controlliamo di nuovo la collezione:

db.pets.find()

Risultato:

{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

Meow il gatto è stato eliminato perché quell'animale esisteva sia nella raccolta MongoDB che nel documento importato.

Bubbles il pesce non aveva alcun documento corrispondente e quindi non è stato eliminato nulla per quello.

Cerca mongoimport

mongoimport fa parte del pacchetto MongoDB Database Tools. I MongoDB Database Tools sono una suite di utilità da riga di comando per lavorare con MongoDB.

Se non sei sicuro di avere MongoDB Database Tools/mongoimport installato, prova a eseguire il seguente comando nel terminale o nel prompt dei comandi per verificare:

mongoimport --version

Se ce l'hai, dovresti vedere le informazioni sulla versione, ecc. Se non ce l'hai, puoi usare le istruzioni di installazione sul sito Web di MongoDB per installarlo sul tuo sistema.

Dove eseguire i comandi?

Non dimenticare che devi eseguire mongoimport comandi dalla riga di comando del sistema (ad es. una nuova finestra del terminale o del prompt dei comandi).

Non eseguirli da mongo guscio.