我试图将整数添加到一个数组中,如果这个数组中还不存在整数的话。但是下面的代码会产生重复值:
User.update(
{
'topics': sequelize.fn('array_append', sequelize.col('topics'), topicId),
},
{where: {uuid: id}})
PostgreSQL/sequelize中是否有与MongoDB $addToSet等效的函数?
我试图将整数添加到一个数组中,如果这个数组中还不存在整数的话。但是下面的代码会产生重复值:
User.update(
{
'topics': sequelize.fn('array_append', sequelize.col('topics'), topicId),
},
{where: {uuid: id}})
PostgreSQL/sequelize中是否有与MongoDB $addToSet等效的函数?
2条答案
按热度按时间yuvru6vn1#
引用MongoDB手册:
$addToSet运算符向数组中添加一个值,除非该值已经存在,在这种情况下,
$addToSet
不对该数组执行任何操作。此SQL命令执行您所要求的操作:
@>
是包含运算符的数组,在本例中是||
数组到元素的连接。详细信息请参阅此处的手册。相关:
不适用于
null
值。在这种情况下,请考虑:array_position(topics, topicId) IS NULL
。请参见:你可以把它 Package 成一个简单的函数:
像这样使用它:
但是顶部的查询甚至只在列值实际改变时才写入新的行版本。要实现相同的目的(不使用函数):
最后一个是我最喜欢的。
参见:
qyswt5oh2#
我也遇到过同样的问题,这就是我解决的方法。
不过,我觉得肯定有更好的办法。