Mongoskin-聚合查询引发错误,在mongo CLI中可以正常工作

SDG*_*SDG 0 mongodb node.js express mongoskin

因此,我有一个相当简单的mongo查询,试图从集合中返回唯一年份的列表。我有一个使用mongo CLI构建的汇总查询,它返回我要查找的结果:

db.rides.aggregate([{'$group': {_id: {year: {'$year': '$date'}}}},{'$sort' : {'_id.year' : -1}}])
Run Code Online (Sandbox Code Playgroud)

当我将其插入使用mongoskin作为数据库驱动程序的express应用程序时,它将引发错误

db.collection('rides').aggregate([{'$group': {_id: {year: {'$year': '$date'}}}},{'$sort' : {'_id.year' : -1}}]).toArray(function(err, years) {
    res.json(years);
});
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: Cannot read property 'readPreference' of undefined
at Collection.aggregate (/Users/Shared/projects/fitness-tracker/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/collection/aggregation.js:260:17)
at EventEmitter.<anonymous> (/Users/Shared/projects/fitness-tracker/node_modules/mongoskin/lib/utils.js:120:34)
at EventEmitter.g (events.js:180:16)
at EventEmitter.emit (events.js:98:17)
at /Users/Shared/projects/fitness-tracker/node_modules/mongoskin/lib/utils.js:169:27
at Db.collection (/Users/Shared/projects/fitness-tracker/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/db.js:503:44)
at EventEmitter.<anonymous> (/Users/Shared/projects/fitness-tracker/node_modules/mongoskin/lib/collection.js:51:21)
at EventEmitter.g (events.js:180:16)
at EventEmitter.emit (events.js:98:17)
at /Users/Shared/projects/fitness-tracker/node_modules/mongoskin/lib/utils.js:169:27
Run Code Online (Sandbox Code Playgroud)

我可以找到类似的报告,指出无法使汇总查询与mongoskin一起使用时遇到麻烦。有很多人建议仅使用本机mongo驱动程序,但是我的堆栈跟踪与我所看到的有所不同。查询中的任何内容是否有问题?有任何想法吗?

谢谢

Bat*_*eam 5

您的聚合查询syntax是错误的,它应具有callback以下功能:

db.collection('rides').aggregate([{'$group': {_id: {year: {'$year': '$date'}}}},
    {'$sort' : {'_id.year' : -1}}],function(err, years) {
    console.log(years);
});
Run Code Online (Sandbox Code Playgroud)

并处理callback函数中的响应。在这里您将获得结果数组。