MongoDB - Requête sur le dernier élément d'un tableau?
Je sais que MongoDB prend en charge la syntaxe find{array.0.field:"value"}
mais j'ai particulièrement envie de le faire pour le dernier élément dans le tableau, ce qui signifie que je ne sais pas l'index. Est-il une sorte d'opérateur, ou suis-je de la chance?
EDIT: Pour préciser, je veux trouver() pour renvoyer uniquement les documents où un champ dans le dernier élément d'un tableau correspond à une valeur spécifique.
source d'informationauteur Joseph Blair
Vous devez vous connecter pour publier un commentaire.
En 3.2, c'est possible. Premier projet de sorte que myField ne contient que le dernier élément, et ensuite le match sur myField.
J'ai posté sur le site officiel de Mongo groupe Google iciet obtenu une réponse de leur personnel. Il semble que ce que je cherche n'est pas possible. Je vais juste utiliser un schéma différent de l'approche.
Pas sûr au sujet de la performance, mais cela fonctionne bien pour moi:
utilisation $tranche.
D'édition:
Vous pouvez faire usage de
{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }
pour trouver une correspondance.Mais il ne vous donnera pas exactement ce que vous cherchez. Je ne pense pas que c'est possible dans mongoDB encore.
Vous pouvez utiliser
$position: 0
chaque fois que vous$push
et puis toujours requêtearray.0
pour obtenir le plus récemment l'ajout d'un élément. Bien entendu, vous ne serez pas en mesure d'obtenir la nouvelle "dernière" de l'élément.Vous pouvez utiliser $expr ( 3.6 mongo version de l'opérateur ) pour utiliser les fonctions d'agrégation en question régulière.
Comparer
opérateurs de requête
vsagrégation des opérateurs de comparaison
.Scalaires tableaux
Pour l'embarqué tableaux - Utilisation
$laissez -
expression de projet dernier élément avec la notation point pour accéder à la valeur du champ.Printemps
@Query
codeVersion 3.6 utilisation d'agrégation pour atteindre le même.