Capitolo 2

Operatori $ALL, $IN e $NIN


Capitolo 2: CRUD


Presentazione CRUD e Operatori
Insert: Aggiungere Documenti
Find e FindOne: Cercare i Documenti
Operatori $GT e $LT: Maggiore di e Minore di
Operatori $EXISTS, $TYPE e $REGEX
Combinare le Query con $AND e $OR
La Ricerca e gli Array
Operatori $ALL, $IN e $NIN
La Ricerca e i Sotto-Documenti
Limit, Sort, Skip e Count
Update: i Primi Due Approcci
Update e gli Array
Update: Upsert e Multi-Update
Remove e Drop: Eliminare i Documenti

Operatori $ALL, $IN e $NIN

Restiamo sempre in tema di array e vediamo invece come utilizzarle nella ricerca con gli operatori $all, $in e $nin.

Lezione su $all, $in e $nin

In questa lezione parleremo degli operatori $all e $in che hanno la caratteristica di ricevere in ingresso, non un semplice valore come gli altri operatori che abbiamo visto sinora ma bensì, degli array.

Aggiungiamo qualche altro articolo per avere varie combinazioni di tag.


Immaginiamo di voler cercare tutti i documenti che hanno sia il tag “mongodb” sia “array”, per farlo possiamo usare l’operatore $all in questo modo:

> db.articles.find( { tags: { $all : [ “mongodb”,”array” ] } } )

Precisiamo che noi gli abbiamo scritti senza pensare all’ordine ed infatti neanche Mongo lo tiene in considerazione.


Infatti, guardando i risultati possiamo notare che i documenti trovati possono avere anche altri tag oltre quelli cercati ma l’importante è che quelli specificati nella query siano presenti, anche se con ordine inverso.

L’altro operatore che vedremo oggi è $in, qualcuno di voi potrebbe conoscerlo perchè nell’SQL ce n’è uno simile, beh questo ci permette di specificare una lista di valori, esattamente come $all ma con la differenza che basta semplicemente che sia presente anche un solo degli elementi ricercati, vediamolo:

> db.articles.find( { tags: { $in : [ “mongodb”,”query” ] } } )

Ci mostra tutti i documenti che contengono il tag mongodb oppure query o anche entrambi, l’importante è che almeno uno dei due sia presente.


L’operatore $in possiamo utilizzarlo anche con le stringhe dato che si adatta ai tipi di dato, ad esempio:

> db.articles.find( { title: { $in : [ “primo”,”secondo” ] } } )


Ah,quasi dimenticavo...c’è anche l’operatore $nin ovvero la negazione di $in, ma questo ve lo lascio scoprire da soli, fate qualche prova!