在CouchDB中按用户定义的顺序(位置)对多个文档进行排序/排序的最佳做法是什么?
我想到的解决方案:
每个文档都有一个“位置”值,从1到n。视图将发出此值。问题:如果对一个文档进行了排序,则所有其他具有更高位置的文档都必须更新。这可能是数以百计的更新。 HMM。
每个文档都知道它是以前的文档的_id。检索视图后生成订单。
这是一个特殊文档,用于存储应在数组中排序的所有文档的_ids。我们在检索视图后再次对此解决方案进行排序。
是否有其他更简单的解决方案?在RDBMS解决方案中1.最佳实践和简单的更新查询对所有文档进行位置更新。
祝你好运, 贝恩德
答案 0 :(得分:4)
您可以使用浮点值,例如介于0.0和1.0之间的位置。要在文档B和C之间移动文档A,您只需将其新位置设置为(B.position + C.position) / 2.0
(即其位置的平均值)。