微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

Mongo说我应该把第二个required参数聚合到聚合函数,因为我的当前用法已被弃用.

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

$this->db->{$collection}->aggregate($options);

并返回以下格式:

{"result":[
    {
    "_id":"xxxxxx","update":[
    {
    "firstUpdateTime":xxxxxx,"updateTime":xxxxxxx,}
    ],"media":[
    {
    "xxxx":{ ...

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

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

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

{"cursor":{
"id":{
"value":"xxxxxx"
},"ns":"xxxxxx.instagram","firstBatch":[
{
"_id":"xxxxxx","update":[
{
"firstUpdateTime":xxxxxx,"updateTime":xxxxxx,}
],"media":[
{
"xxxxxx":{ ...

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

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

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

更新:

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

为什么?

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

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

当您知道希望阅读的文档数量时,它非常有用.当您只需要10个文档时,可以使用batchSize =>获取单个网络数据包中的所有文档. 10.指定batchSize =>时5,它需要更长的时间,因为它需要两个网络数据包到数据库来获得预期的10个文件.

使用认的batchSize是安全的.

您可以尝试使用foreach迭代游标,就像docs:http://php.net/manual/en/class.mongocommandcursor.php中的示例一样

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

原文地址:https://www.jb51.cc/php/137432.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐