2016-12-27 49 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)); 

它的确有窍门。这是多余的,可能是更好的解决方案,但现在,这解决了我的问题。