Node.js Mongoskin——聚合查询抛出错误,在mongo cli中工作正常

Node.js Mongoskin——聚合查询抛出错误,在mongo cli中工作正常,node.js,mongodb,express,mongoskin,Node.js,Mongodb,Express,Mongoskin,因此,我有一个相当简单的mongo查询,试图从集合中返回唯一年份的列表。我有一个使用mongo CLI构建的聚合查询,它返回我要查找的结果: db.rides.aggregate([{'$group': {_id: {year: {'$year': '$date'}}}},{'$sort' : {'_id.year' : -1}}]) 当我将其插入使用mongoskin作为db驱动程序的express应用程序时,它会抛出一个错误 db.collection('rides').aggregate

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

db.rides.aggregate([{'$group': {_id: {year: {'$year': '$date'}}}},{'$sort' : {'_id.year' : -1}}])
当我将其插入使用mongoskin作为db驱动程序的express应用程序时,它会抛出一个错误

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

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
TypeError:无法读取未定义的属性“readPreference”
在Collection.aggregate(/Users/Shared/projects/fitness tracker/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/Collection/aggregation.js:260:17)
在黄昏时分。(/Users/Shared/projects/fitness tracker/node_modules/mongoskin/lib/utils.js:120:34)
在EventEmitter.g(events.js:180:16)
在EventEmitter.emit(events.js:98:17)
at/Users/Shared/projects/fitness tracker/node_modules/mongoskin/lib/utils.js:169:27
在Db.collection(/Users/Shared/projects/fitness tracker/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/Db.js:503:44)
在黄昏时分。(/Users/Shared/projects/fitness tracker/node_modules/mongoskin/lib/collection.js:51:21)
在EventEmitter.g(events.js:180:16)
在EventEmitter.emit(events.js:98:17)
at/Users/Shared/projects/fitness tracker/node_modules/mongoskin/lib/utils.js:169:27
我可以找到类似的报告,称在使用mongoskin进行聚合查询时遇到了问题。很多人建议只使用本机mongo驱动程序,但我的堆栈跟踪与我见过的任何东西都不同。我的问题中有什么突出的问题吗?有什么想法吗


谢谢

您的聚合查询
语法
错误,它应该使用
回调
函数,如下所示:

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

并在
回调
函数中处理响应。您可以从中获取结果数组。

您的聚合查询
语法错误,它应该使用
回调函数,如下所示:

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

并在
回调
函数中处理响应。您可以从中获得结果数组。

Lovely—工作非常完美—只是假设聚合返回了一个需要toArray()调用的对象—不知道它接受了回调。我的错。谢谢。可爱-工作得很好-只是假设聚合返回了一个需要toArray()调用的对象-不知道它接受了回调。我的错。谢谢