Node.js 使用mongdb驱动程序2.2.16的Mongodb聚合框架;“未定义”;在结果集中

Node.js 使用mongdb驱动程序2.2.16的Mongodb聚合框架;“未定义”;在结果集中,node.js,mongodb,Node.js,Mongodb,在收到“折旧”警告后,我刚刚将mongodb驱动程序从1.4升级到2.2.16 问题似乎在于如何进行聚合。如果我删除$match,它就会工作。带有$match的内容在resultset中给了我“undefined” 这是我的聚合函数 Doc.aggregate( {$match:searchCriteria},//删除它会得到结果 {$project:{title:1,description:1,createdOn:1,extension:1,workflows:1,enableworflow

在收到“折旧”警告后,我刚刚将mongodb驱动程序从1.4升级到2.2.16

问题似乎在于如何进行聚合。如果我删除$match,它就会工作。带有$match的内容在resultset中给了我“undefined”

这是我的聚合函数

Doc.aggregate(
{$match:searchCriteria},//删除它会得到结果
{$project:{title:1,description:1,createdOn:1,extension:1,workflows:1,enableworflow: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},
函数(错误、结果){
console.log(result);//这给出了未定义的
填充(结果,{path:'userid',选择:'firstName,lastName,userEmail'},函数(err,docCol){
console.log(err,docCol);
console.log('items',items);
回拨({
docCol,
showNext:showNext,
第页:第页,
项目:项目
});
});
}

);正如我所怀疑的,我必须在我的“searchCriteria”表单中基本上去掉双引号。所以我做了

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

它成功了。这是多余的,可能是一个更好的解决方案,但现在,这为我解决了问题。

创建
searchCriteria
对象的代码在哪里?构建searchCriteria的代码就在上面。它以var searchCriteria={}开头;搜索条件。$和=[];并根据最终传递的参数建立标准,达到我上面发布的内容。请将其包含在问题中,好吗?我删除了关键字段中的双引号,然后重试。它成功了。看起来聚合不喜欢json的格式。有没有办法不在json对象的键字段中包含双引号?