【问题标题】:Mongoskin -- aggregate query throws error, works fine in mongo cliMongoskin -- 聚合查询抛出错误,在 mongo cli 中工作正常
【发布时间】:2014-11-16 06:13:29
【问题描述】:

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

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

当我将它插入使用 mongoskin 作为数据库驱动程序的 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 驱动程序,但我的堆栈跟踪与我所见过的任何不同。我的查询中有什么突出的问题吗?有什么想法吗?

谢谢

【问题讨论】:

    标签: node.js mongodb express mongoskin


    【解决方案1】:

    您的聚合查询syntax 错误,它应该采用callback 函数,如下所示:

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

    并在callback 函数中处理响应。在那里你会得到你的结果数组。

    【讨论】:

    • 可爱 - 完美运行 假设聚合返回了一个需要 toArray() 调用的对象 - 不知道它接受了回调。我的错。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2016-01-27
    相关资源
    最近更新 更多