对不起,如果标题不清楚,但我发现我的问题很难简单地解释。我有一些具有如下结构的JSON文档:
{
"count": 100,
"groups": [
{
"name": "group A",
"count": 12
},
{
"name": "group B",
"count": 22
},
{
"name": "group C",
"count": 7
}
]
}基本上,文档有一个项目计数加上将该计数细分为较小的组。这个记录代表了100件物品的收藏,其中12件来自A组,22件来自B组,7件来自C组。
现在,我有一个关于“计数”的元素范围索引和一堆这样的文档。我希望能够根据以下任何选项进行排序:
我试过了
.orderBy(qb.sort("count", "descending"))这似乎是按总成本(文档根中的成本)排序的,但我不确定这是否总是正确的,或者我需要指定其他的东西来保证它始终得到特定的成本。
对于按特定组进行排序,我不知道如何指定它。
有什么建议吗?
发布于 2017-08-27 16:37:09
是否可以将每个组存储在一个单独的文档中?这样,您就可以独立地对组进行匹配和排序,并计算任意组合组的总计。
对于熟悉关系数据库的人来说,最优粒度是将每一行建模为一个单独的文档。
在MarkLogic 9上,您可以编写一个TDE,它将每个组作为一个单独的行进行投影,然后不管文档持久性如何,对行进行排序。
但是,如果您独立地更新组,则最好为每个组编写一个单独的文档。
如果您在MarkLogic 8中工作,并且必须将多个组存储在一个文档中,则可以在enode上使用服务器端JavaScript或XQuery对节点进行排序。虽然这种方法在功能上有效,但它并没有充分利用MarkLogic功能。
所有上述假设都假定您必须实现这些计数文档。另一个问题是,您是否可以将计数的内容放在文档中,将A、B和C集合放在这些可数文档上,并动态计算可数文档的任意组合的计数。
希望这有帮助,
发布于 2017-08-27 17:08:34
请参阅与数据建模或使用TDE有关的前面的答案。
否则,如果您有有限数量的组,并且每个组在每个文档中只存在一次,那么您可以对上面的每个组使用一个单独的路径范围索引,然后通过引用适当的索引进行排序。
https://stackoverflow.com/questions/45901868
复制相似问题