sql >> Database >  >> NoSQL >> MongoDB

Vind MongoDB-records waar het matrixveld niet leeg is

Als u ook documenten heeft die de sleutel niet hebben, kunt u het volgende gebruiken:

ME.find({ pictures: { $exists: true, $not: {$size: 0} } })

MongoDB gebruikt geen indexen als het om $size gaat, dus hier is een betere oplossing:

ME.find({ pictures: { $exists: true, $ne: [] } })

Als uw eigenschap ongeldige waarden kan hebben (zoals null boolean of anderen), dan voeg je een extra controle toe met $types zoals voorgesteld in dit antwoord:

Met mongo>=3,2:

ME.find({ pictures: { $exists: true, $type: 'array', $ne: [] } })

Met mongo <3.2:

ME.find({ pictures: { $exists: true, $type: 4, $ne: [] } })

Sinds de release van MongoDB 2.6 kun je vergelijken met de operator $gt maar kan tot onverwachte resultaten leiden (een gedetailleerde uitleg vindt u in dit antwoord):

ME.find({ pictures: { $gt: [] } })


  1. Wat u moet weten wanneer u in productie met MongoDB gaat werken - Tien tips

  2. MongoDB samengestelde sleutel

  3. Redis actief-actieve replicatie

  4. Toegang tot redis lokaal op docker - docker compose