2011-06-19 6 views
4

Pour une raison quelconque, je ne trouve pas de document lorsque je recherche par l'identifiant d'un document imbriqué. Je peux effectuer d'autres trouvailles assez facilement si ces deux travaux:Mongodb/Mongoose dans Node.js. Recherche par identifiant du document imbriqué

User.findOne({"_id" : some_id}, function(err,user){} 
User.findOne({"arrayOfNestedDocs.value":someValue}, function(err,user){} 

Mais trouver par id de doc imbriqué ne fonctionne pas:

User.findOne({"arrayOfNestedDocs._id" : some_id}, function(err,user){} 

Je peux effectuer la recherche dans une coquille de mongo donc, mais pas via mongoose. Toutes les idées seraient utiles.

+0

Faites vos documents imbriqués ont un attribut _id et est Quelque chose de type ObjectId? – Matt

+0

Oui, ils ont un _id donc je peux effectuer la recherche dans un shell bien (question éditée pour dire que) –

+0

Je suppose que cela peut être un problème avec le type 'some_id'. Il devrait être mongoId, de nombreux peuples confrontés au même problème dans les différents pilotes. Ils passent chaîne au lieu de mongoïde par exemple. Sinon, cela ressemble à un bug. Aussi mb vous pouvez nous montrer la structure de vos documents? –

Répondre

1

Je l'ai ajouté comme un problème dans la project

0

Si vous essayez de trouver un document incorporé alors la syntaxe est:

User.findOne({_id: id}, function(err, user) { 
    var embeddedDoc = user.embeddedDocs.id('embeddedDocId'); 
}); 
+6

Mais que se passe-t-il si l'ID de document de niveau supérieur n'est pas connu, nous avons donc uniquement embeddedDocId pour travailler avec. –

Questions connexes