因此,我有一个相当简单的mongo查询,在这里,我试图从一个集合中返回一个独特年份的列表。我有一个使用mongo构建的聚合查询,它返回我要查找的结果:
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我可以找到类似的报告,说明聚合查询在使用mongoskin时遇到了困难。很多人建议只使用原生的mongo驱动程序,但是我的堆栈跟踪与我看到的任何东西都不一样。我的查询中有什么是问题吗?有什么想法吗?
谢谢
发布于 2014-11-16 07:38:36
聚合查询syntax是错误的,它应该接受如下所示的callback函数:
db.collection('rides').aggregate([{'$group': {_id: {year: {'$year': '$date'}}}},
{'$sort' : {'_id.year' : -1}}],function(err, years) {
console.log(years);
});并在callback函数中处理响应。在那里您将得到您的结果数组。
https://stackoverflow.com/questions/26954421
复制相似问题