2016-12-27 9 views
0

mongodbドライバを1.4から2.2.16に "償却"した後にアップグレードしました。mongdbドライバを使用したMongodb集約フレームワーク2.2.16結果セットに "undefined"を与える

問題は集約の方法と思われます。 $ matchを削除すると動作します。 $ matchで何かが私に結果セットの "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オブジェクト(文字列ではない)です。ここで私は先に述べたように、これは正常に動作するために使用ではなく、もうアップデートと2.2.16へ

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

のように見えるものです。私はあなたの助けに感謝します。

+0

'searchCriteria'オブジェクトを作成するコードはどこですか? – chridam

+0

searchCriteriaを構築するコードはすぐ上にあります。これは、var searchCriteria = {}; searchCriteria。$と= [];で始まります。また、最終的に渡されたパラメータに基づいて基準を作成し、上に投稿したものになります。 – bobsov534

+0

あなたは[編集]して質問に含めることができますか? – chridam

答えて

0

疑いのあるように、私は基本的に "searchCriteria"編成で二重引用符を取り除かなければなりませんでした。だから、私はした、

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

それはやった。これは冗長であり、より良い解決策があるかもしれませんが、現在のところ、これは私の問題を解決します。

関連する問題