我是MongoDB的初学者,所以我有几个问题。首先,我的代码是用PHP编写的。我的使用背景如下:
{
"_id": "58c91c8059b0a500083dab0c",
"year": "2017",
"month": "03",
"day": "15",
"data": {
"key-1": "value-1",
"key-2": "value-2",
"key-n": "value-n"
}
}
我想获得具有特定密钥的所有文档并总结其价值。所以我使用了这段代码:
$manager = new \MongoDB\Driver\Manager( MONGO_SERVER );
$filter = array (
"year" => $_POST['time_year'],
"month" => $_POST['time_month'],
"day" => $_POST['time_day']
);
$options = [
'projection' => ['_id' => 0],
];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $manager->executeQuery('REPORT.xxxxxxx', $query);
foreach ($rows as $entry) {
[..]
}
但是我收到了这个错误:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
所以,从这个问题我有这个问题:
答案 0 :(得分:0)
您遇到了与MongoDB的内存池相关的问题,以及如何控制它。这是基于您的系统以各种方式完成的。
然而,在此之前,您正在从PHP的角度来看代码。我认为你应该看一看$ aggregate $ unwind和其他类似的MongoDB数据操作函数。
建议:花一些时间来理解和配置mongod.conf文件,并了解这些选项对您的系统意味着什么。然后花点时间看看Mongo使用文档检索数据之间的差异。
至于mongo的最佳语言..你可能会得到很多答案。 Mongo正式支持Node.js驱动程序,Mongo从一开始就一直在使用Node.js。 (想想PHP到MySQL和Node.js到MongoDB一样)。虽然我相信很多人会反驳这种类比。 但作为一名PHP程序员,我绝不会想到将PHP与Mongo一起使用。就我在过去两年中所看到和观察到的而言,Node简直就是Mongo的天然伙伴。