CouchDB - 按位置对文档进行排序

时间:2010-03-10 18:17:31

标签: sorting document couchdb

在CouchDB中按用户定义的顺序(位置)对多个文档进行排序/排序的最佳做法是什么?

我想到的解决方案:

  1. 每个文档都有一个“位置”值,从1到n。视图将发出此值。问题:如果对一个文档进行了排序,则所有其他具有更高位置的文档都必须更新。这可能是数以百计的更新。 HMM。

  2. 每个文档都知道它是以前的文档的_id。检索视图后生成订单。

  3. 这是一个特殊文档,用于存储应在数组中排序的所有文档的_ids。我们在检索视图后再次对此解决方案进行排序。

  4. 是否有其他更简单的解决方案?在RDBMS解决方案中1.最佳实践和简单的更新查询对所有文档进行位置更新。

    祝你好运, 贝恩德

1 个答案:

答案 0 :(得分:4)

您可以使用浮点值,例如介于0.0和1.0之间的位置。要在文档B和C之间移动文档A,您只需将其新位置设置为(B.position + C.position) / 2.0(即其位置的平均值)。