我有一个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",
"date": "2017-01-27"
}
{
"kwId" : "123446",
"p1": "30"
"p2": "50",
"date": "2017-01-27"
}
对于每个日期,我有大约44,000个文件。让我们说,我想找到具有相同kwId但不同日期的文件的p1和p2值的差异,例如2017-01-28和2017-01-27。示例结果:
{
"kwId" : "123445",
"p1": "20"
"p2": "15",
}
{
"kwId" : "123446",
"p1": "5"
"p2": "20",
}
最有效的方法是什么?我正在使用PHP和我尝试的是,检索给定日期的所有文档并计算PHP中的差异。这很慢。
答案 0 :(得分:1)
我意识到正确的方法是用PHP进行计算。首先,我改变了结构。我做了kwId和日期 id 。 这有两个原因。
我用kwId和date查询文件。所以必须将它们编入索引以加快这一过程。
{ “ID”: { “kwId”:123445, “日期”:“2017-01-28” }, “p1”:“15”, “p2”:“25” }
在我的问题中,我说“我已经尝试过,检索给定日期的所有文件并计算PHP的差异。这非常慢。”完成流程需要大约50分钟。如上所述,在文档结构稍有变化之后,使用二进制搜索而不是php的默认搜索功能,现在我只需等待几毫秒。