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

如何在 mongodb 里面做某个字段的 0/1(或两个状态)切换

  •  
  •   lzt163 · 2014-02-18 21:54:44 +08:00 · 4674 次点击
    这是一个创建于 3932 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如该记录有的id status两个字段
    如何通过id 切换status的0/1状态
    不用先取status数据再取反再update这样
    8 条回复    1970-01-01 08:00:00 +08:00
    ceclinux
        1
    ceclinux  
       2014-02-18 22:24:48 +08:00
    我觉得。。。为什么要设计成这样呢,我会每次inc然后用的时候取2余数
    lzt163
        2
    lzt163  
    OP
       2014-02-18 23:23:14 +08:00
    @ceclinux 这样不是还是要作两次操作么 inc update?
    我希望可以一次操作 或者有原子性 比方说类似 findandmodify这类感觉
    ceclinux
        3
    ceclinux  
       2014-02-19 00:18:46 +08:00   ❤️ 1
    @lzt163 一次就行啊,存的时候当int存,用的时候%2使用。根本不用先取status,切换的时候直接status+1
    cevincheung
        4
    cevincheung  
       2014-02-19 01:00:43 +08:00
    可以直接update啊,如果不需要验证数据是否存在的话。
    shiniv
        5
    shiniv  
       2014-02-19 11:04:59 +08:00
    用位运算呗,简单方便。。
    gihnius
        6
    gihnius  
       2014-02-19 11:48:57 +08:00
    @lzt163 你连 update里面的 $inc 也算一次,真难伺候了,哈哈
    pilipala
        7
    pilipala  
       2014-02-19 19:44:57 +08:00
    只有$inc了, 位运算也需要先读出来,
    $inc 在mongodb 里面就是原子的,
    楼主自己看看书吧
    lzt163
        8
    lzt163  
    OP
       2014-02-19 20:33:13 +08:00
    @ceclinux 感谢 没有想到用的时候%2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5651 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:13 · PVG 15:13 · LAX 23:13 · JFK 02:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.