kzen.dev
  • Questions
  • Tags
  • Utilisateurs
Notifications
Récompenses
Inscription
Une fois inscrit, vous serez informé des réponses et des commentaires à vos questions.
Connectez-vous
Si vous avez déjà un compte, connectez-vous pour vérifier les nouvelles notifications.
Il y aura des récompenses pour les questions, réponses et commentaires ajoutés.
Détails
Source
Editer
 skerit
skerit
Question

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

Tous mes enregistrements ont un champ appelé "images". Ce champ est un tableau de chaînes de caractères.

Je veux maintenant les 10 derniers enregistrements où ce tableau N'EST PAS vide.

J'ai fait des recherches sur Internet, mais bizarrement, je n'ai pas trouvé grand chose à ce sujet. Je me suis renseigné sur l'option $where, mais je me demandais si elle était plus lente que les fonctions natives et s'il existait une meilleure solution.

Et même dans ce cas, cela ne fonctionne pas :

ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind()

Elle ne renvoie rien. Laisser this.pictures sans le bit de longueur fonctionne, mais cela renvoie aussi des enregistrements vides, bien sûr.

440 2013-02-09T15:39:06+00:00 3
Neil Lunn
Neil Lunn
Question modifiée 30 octobre 2017 в 8:51
Programmation
mongodb
mongoose
Cette question a 1 réponse en anglais, pour les lire connectez-vous à votre compte.
Solution / Réponse
 Chris'
Chris'
5 août 2014 в 3:24
2014-08-05T15:24:27+00:00
Détails
Source
Editer
#18464163

Si vous avez aussi 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: [] } })

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

ME.find({ pictures: { $gt: [] } })
 Chris'
Chris'
Réponse modifiée 23 mai 2018 в 5:27
720
0
 skerit
skerit
9 février 2013 в 4:02
2013-02-09T16:02:48+00:00
Détails
Source
Editer
#18464161

Après quelques recherches supplémentaires, notamment dans les documents relatifs à mongodb, et en rassemblant des éléments, j'ai trouvé la réponse :

ME.find({pictures: {$exists: true, $not: {$size: 0}}})
 bgran
bgran
Réponse modifiée 25 octobre 2018 в 9:39
168
0
 tenbatsu
tenbatsu
16 juillet 2013 в 2:58
2013-07-16T02:58:52+00:00
Détails
Source
Editer
#18464162

Cela pourrait également fonctionner pour vous :

ME.find({'pictures.0': {$exists: true}});
Dan Dascalescu
Dan Dascalescu
Réponse modifiée 8 juillet 2014 в 8:17
102
0
Ajouter une question
Catégories
Toutes
Technologie
Culture / Loisirs
Vie / Arts
Science
Professionnel
Entreprises
Utilisateurs
Tous
Nouveau
Populaire
1
Ilya Smirnov
Enregistré il y a 1 jour
2
Денис Васьков
Enregistré il y a 2 jours
3
Dima Patrushev
Enregistré il y a 4 jours
4
sirojidddin otaboyev
Enregistré il y a 1 semaine
5
Елена Гайдамамакинат
Enregistré il y a 1 semaine
DE
ES
FR
ID
JA
KO
PT
RO
RU
TR
ZH
© kzen.dev 2023
Source
stackoverflow.com
sous licence cc by-sa 3.0 avec l'attribution