PHP MongoDB - 不推荐使用不带游标选项的aggregate命令.什么?

eph*_*amd 9 php function mongodb php-mongodb

我已经更新了mongo,现在在日志中出现以下错误: 不推荐使用不带游标选项的aggregate命令

Mongo说我应该将第二个REQUIRED参数添加到聚合函数中,因为我当前的用法已被弃用.

我目前使用以下代码PHP(现已弃用):

$this->db->{$collection}->aggregate($options);
Run Code Online (Sandbox Code Playgroud)

并返回以下格式:

{"result":[
    {
    "_id":"xxxxxx",
    "update":[
    {
    "firstUpdateTime":xxxxxx,
    "updateTime":xxxxxxx,
    }
    ],
    "media":[
    {
    "xxxx":{ ...
Run Code Online (Sandbox Code Playgroud)

为了不使用弃用的代码,我添加了新的第二个参数(但我不明白要放什么):

$this->db->{$collection}->aggregate($options, array('cursor' => array('batchSize' => 101)));
Run Code Online (Sandbox Code Playgroud)

这会返回相同的信息,但会改变初始结构:

{"cursor":{
"id":{
"value":"xxxxxx"
},
"ns":"xxxxxx.instagram",
"firstBatch":[
{
"_id":"xxxxxx",
"update":[
{
"firstUpdateTime":xxxxxx,
"updateTime":xxxxxx,
}
],
"media":[
{
"xxxxxx":{ ...
Run Code Online (Sandbox Code Playgroud)

更新后,Mongo强迫我改变读取数据的方式.我不明白我应该把第二个参数叫做"游标"...

我应该在第二个参数中加入什么?我可以在不改变结果结构的情况下设置默认值吗?

Doc:https : //docs.mongodb.com/manual/reference/method/db.collection.aggregate/ http://php.net/manual/es/mongocollection.aggregate.php

更新:

如果我在函数中指示光标我不再收到错误.但是,如果没有应用解决方案,我会阅读LOG并随机出现警告,我有一个代码,我运行了几次,有时如果报告上述警告而其他人没有.

为什么?

Dan*_* W. 5

当您向MongoDB查询某些内容并希望获得结果时,您将拥有一个名为的变量cursor,该变量只是指向您当前已阅读的文档的指针。就像浏览器中的滚动条一样。

您可以batchSize像使用value一样指定应将多少文档读入缓冲区1

当您知道要阅读多少文档时,此功能很有用。当您只需要10个文档时,您可以使用将所有文档放在一个网络数据包中batchSize => 10。当指定时batchSize => 5,将花费更长的时间,因为它将两个网络数据包发送到数据库以获取预期的10个文档。

使用default是安全的batchSize

您可以foreach像在文档中的示例中那样尝试遍历游标:http : //php.net/manual/en/class.mongocommandcursor.php

我不确定php.net文档是否是最新版本的MongoDB驱动程序。