mongodb可以实现这种SQL吗?
在MySQL查询中:mongodb可以实现这种SQL吗?,mongodb,Mongodb,在MySQL查询中: UPDATE $TABLE SET `col1`=`col2` WHERE 1; UPDATE $TABLE SET `col1`=IF(`col1`>100, `col1`-100, `col1`) WHERE 1; MongoDB可以这样做吗?您似乎想做的是有条件的更新—根据文档的当前状态更新文档。MongoDB对此的支持非常有限。有关详细信息,请参阅 对于第一个查询,最好检索文档,更改它们,然后保存它们。除非您的目的不是复制字段,而是重命名它。然后你可以使用
UPDATE $TABLE SET `col1`=`col2` WHERE 1;
UPDATE $TABLE SET `col1`=IF(`col1`>100, `col1`-100, `col1`) WHERE 1;
MongoDB可以这样做吗?您似乎想做的是有条件的更新—根据文档的当前状态更新文档。MongoDB对此的支持非常有限。有关详细信息,请参阅 对于第一个查询,最好检索文档,更改它们,然后保存它们。除非您的目的不是复制字段,而是重命名它。然后你可以使用 对于第二种情况,可以使用此查询:
db.collection.update(
{ field1: { $gt: 100} },
{ $inc: { field1, -100 },
{ multi: true}
);
顺便说一下:您也可以在SQL中使用相同的模式。它可能比使用if条件工作得更快
UPDATE $TABLE SET `col1`=`col1`-100 WHERE `col1 ` > 100
你看过文档了吗?你可以回答你自己的问题。如果你读了这篇文章,你会更好地“描述”你的文档问题,而不是用一种“抽象”的方式来描述你如何使用SQL。@LewisNorton可能不会帮助任何人,除非问题得到解释。该文档来源虽然有用,但仅限于基本解释。我认为评论应该是“引导”而不是“批评”。谢谢!第一个查询不行?我真的需要它,用于原子操作。在mysql中:从$table中选择
col2
,然后更新col1=$col2,但它不是一个原子operation@HengYiHuang你应该提出一个新问题,解释你为什么要这样做。也许我们可以找到另一种解决办法。但为了做到这一点,我们需要了解你正在努力实现的更大的图景。请记住,MongoDB并不是MySQL的替代品。尝试在MongoDB中构建完全相同的1:1结构很少有好结果。要在MongoDB中找到一个好的解决方案,您需要后退一步,看看实际的业务需求,忘记所有关于SQL的知识,找到一个面向文档的解决方案。