不建议使用不带游标选项的aggregate命令
Mongo说我应该把第二个required参数聚合到聚合函数,因为我的当前用法已被弃用.
$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并随机出现警告,我有一个代码,我运行了几次,有时如果它报告上述警告而其他人没有.
为什么?
您可以像使用值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 举报,一经查实,本站将立刻删除。