如何将此mongo查询移植到postgres?

时间:2013-12-07 13:46:20

标签: sql mongodb postgresql

我有一个原子更新,它通过属性中的最低值查找记录,递增该值,并在一个查询中返回结果。

如果我在SQL Server中,我会在事务中使用DECLARE和SET并执行多个查询,但这个postgres DO语法对我来说是煎饼。

我看到DO $$DECLARE r record;这是一个好的开始,但我可以设置或通过其他方式为该变量分配一条记录吗?

在Mongo:

this.findOneAndUpdate(
    { active: true },
    { $inc: { userCount: 1 } },
    { sort: { userCount: 1 } }, // grab the lowest count for update
    cb
);

在SQL Server中我会做这样的事情:(男人已经有一段时间......)

declare @id int
begin
    set @id = select top 1 id 
        from foos 
        where active = 1 
        order by userCount desc

    update foos 
        set userCount = userCount + 1 
        where id = @id

    select foos 
        where id = @id
end

1 个答案:

答案 0 :(得分:3)

不需要do语句...使用带有返回子句的普通更新语句,例如:

update foos 
set userCount = userCount + 1 
where id = (
      select id 
      from foos 
      where active = 1 
      order by userCount desc
      limit 1
    )
returning *