MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Finden Sie MongoDB-Datensätze, bei denen das Array-Feld nicht leer ist

Wenn Sie auch Dokumente haben, die den Schlüssel nicht haben, können Sie Folgendes verwenden:

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

MongoDB verwendet keine Indizes, wenn $size beteiligt ist, daher ist hier eine bessere Lösung:

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

Wenn Ihre Eigenschaft ungültige Werte haben kann (wie null boolean oder andere) , dann fügen Sie eine zusätzliche Prüfung mit $types hinzu wie in dieser Antwort vorgeschlagen:

Mit Mongo>=3.2:

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

Mit Mongo <3.2:

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

Seit der Veröffentlichung von MongoDB 2.6 können Sie mit dem Operator $gt vergleichen kann aber zu unerwarteten Ergebnissen führen (eine detaillierte Erklärung finden Sie in dieser Antwort):

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