我有一个代表维基百科页面的集合,包括标题,类别和链接,如下所示。
{
"_id" : NumberLong(1975),
"Categories" : [
"pacific ocean"
],
"Links" : [
"volcano",
"trench",
"water",
...
"kilometer",
"plate tectonics",
"el niño"
],
"Title" : "pacific ocean"
}
我需要更新Links数组中的一些值,为此,我正在执行以下操作。
db.WikipediaArticles.update({Links:"kilometer"}, {$set: {"Links.$": "kilometre"}}, {upsert:false, multi:true})
然而,这并没有更新所有文件(如预期的那样),我最终必须运行3-4次才能更新所有记录。无论如何我可以保证所有文件都更新了吗?
答案 0 :(得分:3)
$
标识查询中第一个匹配元素的索引,因此每次运行update
时,它最多只会修改一个Links
每个文档的元素。
由于Links
可以包含"kilometer"
的多个元素,因此您需要继续运行update
命令,直到它报告没有文档受到影响。