$ regex与find()和update()mongoose的工作方式不同

时间:2015-01-28 17:30:44

标签: regex node.js mongodb

我有以下正则表达式来查找文本片段中的链接。

var searchQuery = /(^|\s|\n|>)(ftp|http[s]?):\/\/.*/gm;

当我在find()中使用它时,我会说11场比赛:

Table.find({ text : { $regex: searchQuery, $options: 'xi' }})

但是当我使用update()时,我只得到1个匹配:

Table.update({ text : { $regex: searchQuery, $options: 'xi' }},
{$set: {tags: 'bookmark'}})

有人可以指出正则表达式的使用有何不同(如果有的话)。

1 个答案:

答案 0 :(得分:3)

如果您希望update不仅仅适用于第一次匹配,则需要提供{multi: true}选项。

Table.update({text: { $regex: searchQuery, $options: 'xi' }},
             {$set: {tags: 'bookmark'}},
             {multi: true})