V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
among
V2EX  ›  MongoDB

mongodb 中 ListField 的 自定义顺序?

  •  
  •   among · 2021-04-10 18:13:25 +08:00 · 1209 次点击
    这是一个创建于 1084 天前的主题,其中的信息可能已经有所发展或是发生改变。
    class Test_TC(Document):
        meta = {'collection': 'Test_TC', 'strict': False}
        name = StringField()
    
    class Test_TS(Document):
        meta = {'collection': 'Test_TS', 'strict': False}
        name = StringField()
        # 列表
        tc_list = ListField(ReferenceField(Test_TC, reverse_delete_rule=PULL))
        
    

    在 tc_list 中存储的是一个 list,如何来设定里面的 list 的顺序。

    原始需求是,在 Test_TS 存储 一个自定义顺序的 list,关联到 Test_TC 。 开始的时候,使用 push 可以有指定到 index.

    但是后续会有在前端进行 拖拉的动作,调整顺序,如何实现这个顺序调整。

    3 条回复    2021-04-10 20:56:19 +08:00
    maocat
        1
    maocat  
       2021-04-10 19:47:07 +08:00 via Android
    我们的做法,前端把 id 排好顺序,后端重新写入 List
    felixin
        2
    felixin  
       2021-04-10 20:09:56 +08:00 via Android
    加个 position:int,拖动改位置,前端展示前排序
    ch2
        3
    ch2  
       2021-04-10 20:56:19 +08:00
    拖动排序,一般是给每个 key 一个初始的浮点数优先级 pri 保证递增或者递减,把 E 拖到 AB 之间就是更新 preE=(priA+priB)/2,而不是每次把一个 list 传过去再返回来存到数据库里
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2880 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:27 · PVG 19:27 · LAX 04:27 · JFK 07:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.