angularjs - 如何在聚合 MongoDB 中设置 'cursor' 选项

标签 angularjs node.js mongodb mongoose aggregate

我的 API 服务器上有一个聚合命令。它运行良好,直到我将 MongoDB 更新到 3.6.3。现在我收到这种错误:“需要‘光标’选项,除了与解释参数的聚合之外”。 这是我的例子:

ArchiveReq.aggregate({
                $project: {
                    projectId: 1,                       
                    projectName: 1,
                    shortDescription: 1,
                    numOfStudents: 1,
                    creationDate: 1,
                    matches: {$ne: ['$creationDate', '$updateDate']}
                }
            },
            function (err, Requests) {              
                if (err)
                    return res.send(err)

                res.json(Requests);
            }
        ); 

最佳答案

ArchiveReq.aggregate([
                    $project: {
                    projectId: 1,                       
                    projectName: 1,
                    shortDescription: 1,
                    numOfStudents: 1,
                    creationDate: 1,
                    matches: {$ne: ['$creationDate', '$updateDate']}
                    }
                     ],
                     {
                       cursor: { batchSize: 0 }
                     }
                   ).exec(function(error, cursor) {

                   // use cursor 

                   });

版本 3.4 中的更改:MongoDB 3.6 删除了不带游标选项的聚合命令的使用,除非该命令包含解释选项。除非包含解释选项,否则必须指定光标选项。示例:

要指示具有默认批量大小的游标,请指定游标:{}。

要指示具有非默认批量大小的游标,请使用游标:{batchSize:}。

以下示例对文章集合执行聚合操作,以计算出现在集合中的标签数组中每个不同元素的计数。有关更多详细信息,请参阅 https://docs.mongodb.com/manual/reference/command/aggregate/

db.runCommand( {
   aggregate: "articles",
   pipeline: [
      { $project: { tags: 1 } },
      { $unwind: "$tags" },
      { $group: { _id: "$tags", count: { $sum : 1 } } }
   ],
   cursor: { }
} )

关于angularjs - 如何在聚合 MongoDB 中设置 'cursor' 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49172981/

相关文章:

javascript - 如何通知 GoogleBot 关于 Angular SPA 中的 404 页面?

node.js - 如何使用express将参数 “username”传递到 "/"路由器?

node.js - 我应该如何保证涉及金融交易操作的数据库的一致性

Angularjs - 最后一次 ng-repeat li 之后的意外空间

javascript - 使用ng-repeat时如何将数据分成两半?

javascript - 是否可以更新 Chart.js 中图表的宽度?

Mongodb服务未运行

javascript - 我该如何修复 --> 文件是 CommonJS 模块;它可以转换为 ES6 模块

javascript - 在express中传递额外参数 - Node.JS

node.js - 如何从 Mongodb + Express.js 的集合中以列表形式检索所有用户 ID?