MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Rechercher les enregistrements MongoDB où le champ de tableau n'est pas vide

Si vous avez également des documents qui n'ont pas la clé, vous pouvez utiliser :

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

MongoDB n'utilise pas d'index si $size est impliqué, voici donc une meilleure solution :

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

Si votre propriété peut avoir des valeurs invalides (comme null boolean ou autres), puis vous ajoutez une vérification supplémentaire en utilisant $types comme proposé dans cette réponse :

Avec mongo>=3.2 :

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

Avec mongo <3.2 :

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

Depuis la version MongoDB 2.6, vous pouvez comparer avec l'opérateur $gt mais pourrait conduire à des résultats inattendus (vous pouvez trouver une explication détaillée dans cette réponse) :

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