好的,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
}
]
}
现在这个方法还算有效,但是当条目和属性数量增加时,执行聚合的时间会大大增加!有更好(更高效)的方法来实现类似的功能吗?查找最高产品(一组属性的倍数)必须快速。如果有一种方法可以对此进行索引,并具有所有不同属性组合,并将它们缓存或其他方式?索引需要一些时间也没关系,只要查询快速即可!感谢您的帮助,我非常感激!
$out
选项,以将结果保存到输出集合中。请参阅MongoDB问题跟踪器中的SERVER-2353来投票支持该功能或关注更新。 - Stennie