mongodb可以实现这种SQL吗?

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对此的支持非常有限。有关详细信息,请参阅 对于第一个查询,最好检索文档,更改它们,然后保存它们。除非您的目的不是复制字段,而是重命名它。然后你可以使用

在MySQL查询中:

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的知识,找到一个面向文档的解决方案。