sql >> Databasteknik >  >> NoSQL >> MongoDB

Hitta MongoDB-poster där arrayfältet inte är tomt

Om du också har dokument som inte har nyckeln kan du använda:

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

MongoDB använder inte index om $size är inblandat, så här är en bättre lösning:

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

Om din egendom kan ha ogiltiga värden (som null boolean eller andra) , sedan lägger du till en extra kontroll med $types som föreslås i detta svar:

Med mongo>=3.2:

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

Med mongo <3.2:

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

Sedan MongoDB 2.6 släpptes kan du jämföra med operatorn $gt men kan leda till oväntade resultat (du kan hitta en detaljerad förklaring i det här svaret):

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


  1. Kontrollera om ett värde redan finns i en lista Redis

  2. Gå:Skapa io.Writer-gränssnitt för att logga till mongodb-databasen

  3. MongoDB punkt (.) i nyckelnamn

  4. Rescue :Anslutning nekad - Det går inte att ansluta till Redis på localhost:6379