是否可以将 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 所说的那样做,即取出ObjectId
s,然后使用原子$set
在一个查询中完成所有操作。
您需要注意这一点:https://jira.mongodb.org/browse/SERVER-1599
【讨论】:
【参考方案2】:据我所知,没有这样的功能。您可以采取一种解决方法:只需获取要更新的文档的 _id 并使用这些 _id 更新所有文档
【讨论】:
以上是关于是否可以将 mongoDB 中的更新查询限制为特定限制?的主要内容,如果未能解决你的问题,请参考以下文章