Je dispose d'une collection MongoDB contenant des documents au format suivant :
{
"_id" : ObjectId("4e8ae86d08101908e1000001"),
"name" : ["Name"],
"zipcode" : ["2223"]
}
{
"_id" : ObjectId("4e8ae86d08101908e1000002"),
"name" : ["Another ", "Name"],
"zipcode" : ["2224"]
}
Je peux actuellement obtenir des documents qui correspondent à une taille de tableau spécifique :
db.accommodations.find({ name : { $size : 2 }})
Cela renvoie correctement les documents avec 2 éléments dans le fichier name
réseau. Cependant, je ne peux pas faire un $gt
pour retourner tous les documents dans lesquels le name
a une taille de tableau supérieure à 2 :
db.accommodations.find({ name : { $size: { $gt : 1 } }})
Comment puis-je sélectionner tous les documents avec un name
d'une taille supérieure à un (de préférence sans avoir à modifier la structure de données actuelle) ?
3 votes
Les versions plus récentes de MongoDB disposent de l'opérateur $size ; vous devriez consulter la réponse de @tobia.
8 votes
La solution actuelle : FooArray:{$gt:{$size : 'length'}} --> la longueur peut être un nombre quelconque
1 votes
@SergiNadal : Je ne pense pas que cela
FooArray:{$gt:{$size:'length'}}
fonctionne ! Au moins sur l'objet imbriqué qui est un tableau.person:{ids:[123,456]}