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

MongoDB $in Query Operator

I MongoDB er $in forespørgselsoperator vælger de dokumenter, hvor værdien af ​​et felt er lig med enhver værdi i det angivne array.

$in forespørgselsoperator må ikke forveksles med $in aggregeringspipeline-operator, som returnerer en boolean, der angiver, om en specificeret værdi er i arrayet.

Eksempel

Antag, at vi har en samling kaldet products med følgende dokumenter:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 4, "prod" : "Shirt", "sizes" : "M" }
{ "_id" : 5, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Vi kan bruge $in operatør for at vælge netop de dokumenter med specifik _id værdier.

Eksempelkode:

db.products.find({ 
  _id: { $in: [ 1, 2, 3 ] } 
})

Resultat:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }

I dette tilfælde ønskede vi kun dokumenter, der indeholder en _id værdi af 1 , 2 eller 3 .

Eksempel 2

Her er et andet eksempel. Denne gang bruger vi $in mod et andet felt.

db.products.find({ 
  sizes: { $in: [ "L" ] } 
})

Resultat:

{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

I dette eksempel anvendte vi $in til sizes Mark.

I dette tilfælde havde det første dokument værdien som en streng, mens de to andre dokumenter havde det som et array-element. Uanset hvad, blev alle matchende dokumenter returneret.

Sammenligning af forskellige typer evalueres i henhold til BSON-sammenligningsrækkefølgen.

Aggregationseksempel

Vi kan bruge den samme syntaks, når vi bruger $match aggregeringsrørledningsoperatør.

Eksempelkode:

db.products.aggregate(
   [
     { $match: { _id: { $in: [ 1, 2, 3 ] } } }
   ]
)

Resultat:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }

Og her er den igen, mens du spørger efter sizes felt:

db.products.aggregate(
   [
     { $match: { sizes: { $in: [ "L" ] } } }
   ]
)

Resultat:

{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Regulære udtryk

Du kan bruge regulære udtryk i forespørgslen ved at bruge formen /pattern/ .

Eksempel:

db.products.find({ 
  sizes: { $in: [ /^X/ ] } 
})

Resultat:

{ "_id" : 5, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

I dette eksempel returnerer jeg alle dokumenter, der har en sizes felt med en værdi, der enten er en streng, der starter med X eller et array, hvor mindst et af elementerne starter med X .


  1. Find største dokumentstørrelse i MongoDB

  2. MongoDB - Opdater eller indsæt objekt i array

  3. Bedste praksis for MongoDB Security

  4. Redis-transaktioner