2017-10-20 57 views
0

J'ai un code comme celui-ci.Comment trouver un élément dans un tableau d'un document dans mongodb?

router.get('/Child_Profile/:SchoolId/:childId',function(req,res,next){ 
childModel.find({"schoolid":req.params.SchoolId,"students[]":req.params.ChildId}, function (err, result) {  
     if (err) 
      { 
      return console.log(err); 
     } 
    res.json(result); 
     }); 
    }); 

Ex Collection

{ 
"schoolid":"1wer", 
"students":["121","232"], 
"profilepic":"http://wed" 
} 

Bien que je trouve l'information des étudiants en utilisant SCHOOLID et StudentID le schéma ci-dessus était de trouver avec seulement SCHOOLID, pas avec le StudentID. Merci d'avance

+0

Am "étudiants": [ "121232"], devrait peut-être être "étudiants": [ "121", "232"]? vous avez là la chaîne "121,232" recherchez-vous en utilisant cette valeur ou 121? –

+0

Même si, j'ai utilisé $ et c'était comparer avec schoolid seulement. J'ai utilisé comme le childModel.find suivant ({$ et: [{"schoolid": req.params.SchoolId}, {"students []": req.params.ChildId}]}, fonction (err, résultat) { –

+0

yeah..its "students": ["121", "232"] –

Répondre

1

Vous avez renvoyé students as an array - students[], utilisez juste des étudiants et transmettez la valeur du studentid, la requête vous renverra les résultats.

Mongo shell query for the collection 

{ 
     "_id" : ObjectId("59e9cfd4f4896dbabfc15f45"), 
     "schoolid" : "1wer", 
     "students" : [ 
       "121", 
       "232" 
     ], 
     "profilepic" : "http://wed" 
} 

db.collection.find({students:"121"}); 

requête modifiée

router.get('/Child_Profile/:SchoolId/:childId',function(req,res,next){ 
childModel.find({"schoolid":req.params.SchoolId,"students":req.params.ChildId}, function (err, result) {  
     if (err) 
      { 
      return console.log(err); 
     } 
    res.json(result); 
     }); 
    }); 
+0

déjà essayé, il montre un tableau vide –

+0

S'il vous plaît vérifier la valeur de 'req.params.ChildId' et aussi pour vérifier la requête que vous pouvez passer la valeur directement (ici '" étudiants ":" 123 "' et voir quel est le résultat –

+0

Ouais ... Son travail.Merci Mec .... En fait, l'erreur était à la place de ChildId, j'ai donné childId. –