【问题标题】:How do I represent and update the order of docments in database?如何表示和更新数据库中文档的顺序?
【发布时间】:2019-05-02 01:52:37
【问题描述】:

我正在为我的网络应用程序构建一个文件管理器,我需要一个能够手动重新排序文件的用户。如何表示和更新数据库中文件的顺序?

我想创建一个用户可以通过拖放手动重新排序的文件列表,以便可以将文件插入到任意两个文件之间的任何位置。我正在尝试找到一种方法来存储和更新所有文件的位置。

重新排序数组或 json 对象会很容易,但问题是每个文件都是它自己在数据库中的对象。我不能只为每个文件添加一个position 字段,因为如果用户将文件放在列表中间,我必须在该点之后更新所有文件的位置。

有哪些方法可以表示和更新每个文件的位置,以便它们可以按自定义顺序排序?

【问题讨论】:

    标签: javascript node.js database mongodb database-design


    【解决方案1】:

    两种方法:

    选项 1 - 职位字段

    使用位置字段,而不是递增 1,而是递增一个更大的数字,例如1000.每当你添加一个新项目时,查看项目前后的位置,找到它们位置之间的中点并将其用于新项目。例如在位置 1000 和 2000 之间插入将是 1500。

    这样做可以让您将必须更新此项目之后的所有内容的次数降到最低。

    在 BASIC 时代(带有行号),这就是我们避免在必须返回并插入代码时重新编号代码的方法。不是最漂亮的解决方案,但它确实有效。

    选项 2 - 链表

    存储指向下一个项目的链接。当你插入到中间时,你只需要更新前一项的记录。在删除的情况下,您还需要更新上一个项目。

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多