Php 在数千个mongodb文档中进行计算最有效的方法是什么?
我有一个mongo系列。我的收藏可以被认为是这样的:Php 在数千个mongodb文档中进行计算最有效的方法是什么?,php,mongodb,mongodb-query,Php,Mongodb,Mongodb Query,我有一个mongo系列。我的收藏可以被认为是这样的: { "kwId" : "123445", "p1": "15" "p2": "25", "date": "2017-01-28" } { "kwId" : "123446", "p1": "25" "p2": "30", "date": "2017-01-28" } { "kwId" : "123445", "p1": "35" "p2": "40",
{
"kwId" : "123445",
"p1": "15"
"p2": "25",
"date": "2017-01-28"
}
{
"kwId" : "123446",
"p1": "25"
"p2": "30",
"date": "2017-01-28"
}
{
"kwId" : "123445",
"p1": "35"
"p2": "40",
"date": "2017-01-27"
}
{
"kwId" : "123446",
"p1": "30"
"p2": "50",
"date": "2017-01-27"
}
对于每个日期,我都有大约4.4万份文档。比如说,我想找出具有相同kwId但不同日期的文档(如2017-01-28和2017-01-27)的p1和p2值的差异。示例结果:
{
"kwId" : "123445",
"p1": "20"
"p2": "15",
}
{
"kwId" : "123446",
"p1": "5"
"p2": "20",
}
最有效的方法是什么?我正在使用PHP,我尝试的是检索给定日期的所有文档,并计算PHP中的差异。非常慢。我意识到正确的方法是使用PHP进行计算。首先,我改变了结构。我将kwId和日期都设置为id。 原因有二
在我的问题中,我说“我试过的是,检索给定日期的所有文档,并用PHP计算差异。这相当慢。”。完成这一过程大约需要50分钟。在对我上面提到的文档结构做了一些更改之后,使用二进制搜索代替php的默认搜索函数,现在我只需等待几毫秒。聚合框架在这里非常理想,至少如果您将
p1
和p2
数据类型改为Number
,而不是字符串。