我想做一个正则表达式查询:'find'查找记录,其中address包含特定于每条记录的另一个值的一部分。
例如,我有两种类型的记录,我想在
上过滤{
"address": "Street POST-CODE1"
"postcode": "POST-CODE1"
},
{
"address": "Street"
"postcode": "POST-CODE1"
}
我想写一个例子
的查询{ address: { $regex: /this.postcode/i } }
但我不知道如何在正则表达式中引用这个值。
答案 0 :(得分:0)
您可以使用$ where。请注意,它可能非常慢(必须在每条记录上执行Javascript代码),所以如果可以,请与索引查询结合使用。
我对javascript不太熟悉,但是这里有:
使用正则表达式:
db.getCollection('col').find(
{
$where: function()
{
var pattern = new RegExp(this.postcode,"i");
return (this.address.search(pattern )>-1);
}
});
另一种方式:
db.getCollection('col').find({ $where: "this.address.indexOf(this.postcode) >= 0" } );