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

MongoDB søg efter hver diktat på listen i samlingen

Mens det nævnes, at $and operatør er ikke påkrævet, i begge former er dette ikke den forespørgsel, du ønsker. Overvej følgende:

db.user.find_one({ 'names.firstName': 'alice','names.lastName': 'jones' })

Dette gør faktisk matche den givne post, da der er begge elementer med "firstName" lig med "alice" og "lastName" værdier lig med "jones". Men problemet her er selvfølgelig simpelt, idet der ikke er noget egentligt element i arrayet, der har et underdokument for begge disse værdier.

For at matche, hvor et array-element indeholder "begge" de angivne kriterier, skal du bruge $elemMatch operatør. Dette anvender forespørgselsbetingelsen på "elementerne" i arrayet.

db.user.find_one({ 
    'names': { '$elemMatch': { 'firstName': 'alice','lastName': 'smith' }
})

Og selvfølgelig, hvis du prøvede "alice" og "jones", ville det ikke matche, da intet element faktisk indeholder den operation.



  1. Atomic hvis ikke eksisterer, så indsæt i Mongodb .Net driver

  2. Indsæt kun dokumenter i MongoDB, hvis alle felter er unikke

  3. I MongoDB, hvis et indeks er på 3 felter, kan vi bruge det indeks, når vi forespørger på 2 felter? (jokertegn på 3. felt)

  4. MongoDB søg efter hver diktat på listen i samlingen