PostgreSQL hstore中的原子增量,如MongoDB中的$inc
新的pg hstore看起来很棒
http://www.postgresql.org/docs/devel/static/hstore.html 但似乎不像MongoDB那样支持原子增量? db.mycoll.update({mykey: myval},{my_counter: {$inc: 1}}) 如何使用PostgreSQL Hstore执行此操作? 解决方法
MongoDB需要$inc运算符,因为:
>如果没有特定的低级支持,MongoDB中的原子操作很困难. 你只需要用hstores表达c = c 1.这个任务很复杂,因为hstores使用字符串来表示键和值,这会让你有一堆乱七八糟的东西.我想你会遇到像这样讨厌的事情: update t set h = h || hstore('my_counter',((h -> 'my_counter')::integer + 1)::text) where mykey = myval (h – >’my_counter’):: integer 1通过提取值(h – >’my_counter’),将其转换为整数并向其中添加一个来进行增量.然后使用hstore(‘my_counter’,…)构建单个元素hstore,并在值上显示一个显式的:: text,以确保PostgreSQL知道您想要哪个函数.最后,使用h ||将新键值连接到原始hstore hstore(…)替换旧值. 如果你不想一直使用那种有点讨厌的混乱,那么你可以将它包装成一个简单的函数并说: update t set h = hstore_inc(h,'my_counter',1) where ... 隐藏肮脏. 我确信还有其他方法可以做到(使用各种to/from array函数)但上面的方法应该可行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |