Mongodb: come utilizzare una query "not in".


Puoi utilizzare la seguente sintassi per trovare tutti i documenti in cui il valore di un particolare campo non è presente in un determinato elenco di valori:

 db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}}) 

Questa particolare query cerca tutti i documenti in cui il valore del campo 1 non è uguale a valore1, valore2 o valore3.

Gli esempi seguenti mostrano come utilizzare questa sintassi nella pratica.

Esempio 1: richiesta “NOT IN” con un valore

Supponiamo di avere un team di recupero con i seguenti documenti:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

Possiamo utilizzare il seguente codice per trovare tutti i documenti in cui il campo “team” non è uguale al valore “Rockets”:

 db.teams.find({team: { $nin : [" Rockets "]}}) 

Questa query restituisce i seguenti documenti:

 { _id: ObjectId("619527e467d6742f66749b72"),
  team: 'Cavs',
  position: 'Guard',
  points: 33 }

{ _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

Tieni presente che gli unici documenti restituiti sono quelli in cui il campo “team” non è uguale a “Rockets”.

Esempio 2: Richiesta di “NON IN” con un elenco di valori

Supponiamo di avere un team di recupero con i seguenti documenti:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

Possiamo utilizzare il seguente codice per trovare tutti i documenti in cui il campo “team” non è uguale al valore “Rockets” o “Cavs”:

 db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}}) 

Questa query restituisce i seguenti documenti:

 { _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

Da notare che gli unici documenti restituiti sono quelli in cui il campo “team” non è uguale a “Rockets” o “Cavs”.

Nota : puoi trovare la documentazione completa per la funzione $nin qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in MongoDB:

MongoDB: come eseguire una query con un’espressione regolare “Mi piace”.
MongoDB: come verificare se il campo contiene una stringa
MongoDB: come aggiungere un nuovo campo a una raccolta
MongoDB: come rimuovere un campo da ciascun documento

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *