Comment conserver le résultat de la requête (un seul document) dans une variable?
Je voudrais enregistrer un document unique dans une variable de Mongo JS shell, et de manipuler le document (lecture/écriture de plusieurs attributs) pour ce dernier cas, les opérations, mais Mongo JS ne semble pas mettre n'importe quoi dans la variable:
> a = db.col.find().limit(1)
{ "_id" : ObjectId("52dfccba5fd17fe6a4d0051a"), "a" : 16807, "b" : 475249 }
> a
>
Ne mongo prennent en charge l'utilisation? Ou était-il une erreur?
OriginalL'auteur | 2014-01-22
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
var
comme suit:Faire quelques tests j'ai remarqué que les
find()
méthode ne semble pas être l'définition de la variable à l'aide d'un curseur. Dans ces cas, vous perdez la variable après l'instruction suivante.Si vous avez besoin de garder la variable autour pour plus, essayez explicitement l'itération, la variable avant de l'installer à l'aide de
toArray()
.OriginalL'auteur bpruitt-goddard
trouver retourne un curseur. Un curseur ne peut être énumérés une fois, donc une fois que vous avez énuméré un curseur qu'elle a atteint la fin et donner plus d'autres documents. Ainsi, dans l'exemple suivant, la variable a est assigné à un curseur de valeur, et la première fois que nous évaluons la "une" dans le shell, il fait écho aux résultats de l'énumération du curseur. La deuxième fois, nous evalute "un", il énumère le curseur de nouveau, mais cette fois, le curseur est vide donc pas de documents sont fait l'écho:
L'exemple précédent renvoie un curseur, même si vous avez utilisé de la limite(1). Ce n'est pas que "a" perd de sa valeur, il fait toujours référence à la même curseur, c'est juste que le curseur il se réfère a atteint sa fin.
Si vous voulez lire un document unique et ont la valeur de retour d'un document au lieu de l'utilisation du curseur findOne:
Merci pour expliquer cela, je me demandais pourquoi ma variable seulement la valeur de la première heure, mais le curseur explication est logique.
OriginalL'auteur Robert Stam
Si vous voulez un seul élément et que vous voulez éviter de "perdre la variable" problème décrit dans un autre réponses que vous pouvez utiliser
findOne()
au lieu defind()
:La
doc
variable définie dans cette manière sera permanente.OriginalL'auteur fgalan