2015-11-03 3 views
0

я использую два способа для получения документов из моей коллекции, первый:

db.comments.find({"nid" : "req.body.data"}); 

возвращает много документ как:

{ 
    "nid" : 20404, 
    "_id" : ObjectId("5638ba331294943d3d0a092b"), 
    "uid" : 1937, 
    "posted" : ISODate("2015-11-03T13:44:19.811Z"), 
    "text" : "txt", 
    "title" : "Test nid 2", 
    "stars" : 3, 
    "__v" : 0 
} 

, А для другого запроса I необходимо использовать aggregate и запрос:

var pipleline = [ 
      {$match: {nid:req.body.data}} 

     ]; 
     Comments.aggregate(pipleline, function(err, rank){ 
       if(err) { 
        res.send("Error", String(err)); 
       } 
       res.send(rank); 
      }); 

возвращений [] - пустой массив. Любые идеи?

+2

Какая ценность 'req.body.data'? – chridam

+0

Номер, это связано с разбором? –

+0

при извлечении 'req.body.data' вам нужно сделать так, чтобы вы имели там значение. Используйте 'console.log', чтобы убедиться, что существует реальный' nid'. – inspired

ответ

0

Вы можете использовать встроенную функцию chaining mongoose. Помимо матча, у него также есть сортировка, проект, группа и несколько других, которых я не знаю с головы. Больше информации here

 Comments.aggregate().match({nid:req.body.data}) 
     .exec(function(err,rank){ 
      if(err) { 
       res.send("Error", String(err)); 
      } 
      res.send(rank); 
     }); 
Смежные вопросы