好的,MongoDB专家,请看一下我的收藏:
[{
"_id" : "item_0",
"Name" : "Item 0",
"Description" : "Some description for this item...",
"Properties" : {
"a" : 5.0,
"b" : 0.0,
"c" : 6.0,
"d" : 6.0,
"e" : 2.0,
"f" : 0.0,
"g" : 9.0,
"h" : 3.0,
"i" : 4.0,
"j" : 5.0
}
},
{ // 5.000-10.000 more items... }
]
我正在使用这个聚合来乘以一组选定的属性(在本例中为 a、b、c 和 d),然后按它们的乘积对它们进行排序:
{
"aggregate": "item",
"pipeline": [
{
"$project": {
"_id": 1,
"Name": 1,
"s": {
"$multiply": [
"$Properties.a",
"$Properties.b",
"$Properties.c",
"$Properties.d"
]
}
}
},
{
"$sort": {
"s": -1
}
},
{
"$limit": 100
}
]
}
现在这一切都很好,但是当项目和属性的数量增加时,执行聚合的时间会增加很多!
有没有更好的方法(更有效)来实现这样的目标?搜索最高的产品(一组属性的倍数)必须很快。如果有办法对此进行索引,具有所有不同的属性组合并将它们缓存或其他什么?索引需要一段时间没关系,只要查询快!
感谢您在这件事上的任何帮助,我非常感谢!