我有一个集合代表维基百科网页,标题,类别和链接,如下所示。
{
"_id" : NumberLong(1975),
"Categories" : [
"pacific ocean"
],
"Links" : [
"volcano",
"trench",
"water",
...
"kilometer",
"plate tectonics",
"el niño"
],
"Title" : "pacific ocean"
}我需要更新链接数组中的一些值,为此,我将执行以下操作。
db.WikipediaArticles.update({Links:"kilometer"}, {$set: {"Links.$": "kilometre"}}, {upsert:false, multi:true})然而,这并不是在更新所有文档(正如预期的那样),最后我不得不运行3-4次才能更新所有记录。我能保证所有的文件都被更新了吗?
发布于 2014-06-02 22:07:17
$标识查询中第一个匹配元素的索引,因此每次运行update时,每个文档最多只修改一个Links元素。
因为Links可以包含"kilometer"的多个元素,所以您需要继续运行update命令,直到它报告没有任何文档受到影响。
https://stackoverflow.com/questions/24003461
复制相似问题