我有一个独特的情况,我需要查询mongo数据库,以找到文本正文中出现的人的姓名。查询必须指定文本正文并查找具有在文本正文中出现的值的记录。我怎么能用正则表达式做到这一点?
我需要编写一个匹配的查询:
/Jonathan is a handsome guy/.test('Jonathan')
问题是“test”中的文本是mongo字段的值,因此必须编写此查询,使得文本正文作为输入提供,并且匹配在其中出现的名称(是子字符串) )文本正文。
更具体的例子:
db.test.find();
{ "_id" : ObjectId("547e9b79f2b519cd1657b21e"), "name" : "Jonathan" }
{ "_id" : ObjectId("547e9b88f2b519cd1657b21f"), "name" : "Sandy" }
db.test.find({name: { $in: [/Jonathan has the best queries/]} } );
我需要构建一个查询,当输入“Jonathan有最好的查询”时会返回“Jonathan”
答案 0 :(得分:1)
这个$where
可以解决问题,但速度可能很慢:
db.test.find({$where: function() {
var mystr = '/Jonathan has the best queries/';
var patt = new RegExp(this.name);
if (patt.test(mystr)) return true;
return false;
}})