2016-12-27 48 views
0

我得到「折舊」警告後,我剛剛將我的mongodb驅動程序從1.4升級到2.2.16。Mongodb聚合框架使用mongdb驅動2.2.16在結果集中給出「undefined」

這個問題似乎與如何聚合。如果我刪除$匹配,它會起作用。與$匹配的東西給我結果集中的「未定義」。

這是我的聚合函數。

Doc.aggregate(
 
      {$match: searchCriteria}, //Removing this gives result 
 
      {$project: { title: 1, description:1, createdOn:1, extension:1, workflows: 1, enableWorkflow: 1, numPages:1, userid:1, metadata:1, docGalleryId:1, tags:1, status:1, galleryThumbUrl : { $slice: ["$pages.galleryThumbUrl", 1 ] } } }, 
 
      {$unwind: '$galleryThumbUrl'}, 
 
      {$sort: {createdOn: -1}}, 
 
      {$skip: skip}, 
 
      {$limit: items}, 
 
      function (err, result) { 
 
       console.log(result); //This gives Undefined 
 
       Doc.populate(result, {path: 'userid', select: 'firstName, lastName, userEmail'}, function (err, docCol) { 
 
        console.log(err, docCol); 
 
        console.log('items', items); 
 
        callback({ 
 
         docs: docCol, 
 
         showNext: showNext, 
 
         page: page, 
 
         items: items 
 
        }); 
 
       }); 
 
      } 
 

 
     );

searchCriteria是物體(未字符串)。這裏是什麼樣子

{"$and":[{"status":{"$ne":"deleted"}},{"$or":[{"userid":{"$in":["56bf7f25f59d1ff711000005"]}},{"collaboration":{"$elemMatch":{"userid":"56bf7f25f59d1ff711000005"}}}]}]} 

正如我剛纔所說,這用來工作正常,但不會再有更新2.2.16。我很感謝你的幫助。

+0

創建'searchCriteria'對象的代碼在哪裏? – chridam

+0

構建searchCriteria的代碼就在上面。它開始於var searchCriteria = {}; searchCriteria。$和= [];並根據最終通過的參數建立標準,以達到我上面發佈的內容。 – bobsov534

+0

你可以請[編輯]幷包括它的問題? – chridam

回答

0

由於懷疑我必須在我的「searchCriteria」編組中刪除雙引號。所以我做了,

searchCriteria = JSON.parse(JSON.stringify(searchCriteria)); 

它的確有竅門。這是多餘的,可能是更好的解決方案,但現在,這解決了我的問題。