是否可以将 mongoDB 中的更新查询限制为特定限制?

Posted

技术标签:

【中文标题】是否可以将 mongoDB 中的更新查询限制为特定限制?【英文标题】:Is it possible to restrict the update query in mongoDB to a specific limit? 【发布时间】:2013-01-19 17:48:52 【问题描述】:

我想将 mongoDB 集合中的记录更新到固定限制。有没有办法在 php/mongoDB 中做到这一点?

我很了解'multi' 标志。当multi 设置为true 时,它将更新所有匹配的记录,否则只更新一条记录。

但我需要的是我想将集合中的记录更新到 SQL 中的固定限制。

例如。 UPDATE table SET x=10 wher x=1 LIMIT 10

我想知道 mongoDB 是否可以?

希望我的问题很清楚。任何帮助将不胜感激。

【问题讨论】:

目前没有,最好的方法是查询在哪里通过某种子句限制您的记录,或者如果只有少数则从客户端中挑选出来。跨度> @Sammaye 对不起,我没听清楚。你能说清楚一点吗? 基本上,您可以在查询中使用带有x 的另一个字段来将记录限制为您想要更新的记录,但这通常不是真的。所以atm最好的办法就是把它们从客户端拉出来正常运行。 【参考方案1】:

目前无法从您的应用程序将更新查询(仅限查找查询)限制为 MongoDB。

目前最好的方法是将这十个(或其他)拉到客户端,在您的 PHP 应用程序中,并在那里对它们进行更新:

$cursor = $db->col->find(array('x' => 1))->limit(10)
foreach($cursor as $row)
    $row['x'] = 10;
    $db->col->save($row); // Update with set can be used too

如果它是一个小数字,您也可以按照@nw90 所说的那样做,即取出ObjectIds,然后使用原子$set 在一个查询中完成所有操作。

您需要注意这一点:https://jira.mongodb.org/browse/SERVER-1599

【讨论】:

【参考方案2】:

据我所知,没有这样的功能。您可以采取一种解决方法:只需获取要更新的文档的 _id 并使用这些 _id 更新所有文档

【讨论】:

以上是关于是否可以将 mongoDB 中的更新查询限制为特定限制?的主要内容,如果未能解决你的问题,请参考以下文章

仅删除(更新查询)数组mongodb数组中的特定元素?

使用 MONGODB 更新文档记录中的特定字段

将 cdc 限制为特定集合的 Debezium mongodb 连接器属性

mongodb 没有则插入,有则更新其中某列

MongoDB中的多重限制条件

是否有任何开源库可以将 sql 查询语言转换为相应的 mongodb 查询?