Comment retourner le ObjectId ou _id d'un document dans MongoDB? et l'erreur “$a besoin d'un tableau”
J'ai un document dans MongoDB et j'aimerais obtenir de l'ObjectId de ce document, mais je n'ai pas trouvé jusqu'à présent une méthode qui fait cela pour moi.
Exemple de requête :
user= db.users.find({userName:"Andressa"})
Cela revient à ceci :
{ "_id" : ObjectId("53b1c579bdf3de74f76bdac9"), "userid" : 0, "userName" : "Andressa", "userEmail" : "[email protected]", "teams" : [ 1, 2, 3 ] }
Je veux obtenir de l'ObjectId faire une autre requête .
Exemple:
userID = `user._id();` //but this does not work, of course, its an example
Donc, je ne pouvais utilisateur de l'ObjectId faire une autre requête comme ceci:
userFind = db.users.find({_id: userID})
Mise à JOUR:
Ce code :
db.teams.find({_id:{$in: user.teams}})
retourne cette erreur:
error: {
"$err" : "Can't canonicalize query: BadValue $in needs an array",
"code" : 17287
Quelqu'un sait-il?
OriginalL'auteur debeka | 2014-07-03
Vous devez vous connecter pour publier un commentaire.
Dans le shell mongo vous pouvez l'utiliser pour récupérer le
_id
:ou
Voir la documentation : http://docs.mongodb.org/manual/reference/method/ObjectId.valueOf/
OriginalL'auteur kranteg
Je l'ai eu! En fait , je pourrais le faire par ce code:
Au lieu de mettre juste :
Ce que j'ai fait :
et
renvoie la ObjectId("someId")
si je veux les conserver dans une variable que je fais:
À propos de la deuxième question, je ne sais pas.
Il a été 3 ans, mais quelqu'un peut trouver utile:
db.users.find({userName: "And"})[0]._id
OriginalL'auteur debeka
Je suis tombé sur ce que je crois être la même question - comment récupérer l'ObjectId d'un inconnu mongo document. J'ai construit un générique datacontext et nécessaire de l'_id dans mes méthodes update et delete. Ayant trouvé votre question lors de la recherche d'une réponse sur la façon de le faire, j'ai décidé de poster ce qui a finalement fonctionné pour moi.
Je puis utiliser quelque chose comme ceci:
Espère que cette aide.
OriginalL'auteur GeekerMode
Vous pouvez utiliser la méthode find() pour y parvenir.
db.collection.méthode find() ne retourne pas de document, mais il retour du curseur dans le document. en parcourant le curseur, vous aurez les champs au sein de ce document.
Code :
énoncé ci-dessus, obtenir la valeur du champ ObjectId de curseur en cours d'instance.
si vous pouvez récupérer tous les objectId puis en parcourant le curseur, vous aurez toutes les valeurs de ObjectId.
De trouver directement un document à l'aide de objectId reçu dans la première étape, vous pouvez utiliser l'extrait de code suivant:
OriginalL'auteur DanglingPointer