MongoDB正则表达式搜索嵌套对象中的整数值

时间:2016-07-29 13:58:22

标签: regex mongodb mongoose

MongoDB Regex Search on Integer Value。 - 我的问题没有重复。 我想知道如何搜索NESTED对象中的interger值。 我知道几乎有同样的问题,但我的情况有点不同。 假设我在mongo集合中有一个文档,如下所示:

var doc = {
    phone: 11111,
    uId: {
       internalId: 123  
    }
};

我发现我可以在mongodb中对整数值使用正则表达式搜索' $ where'这篇文章中的条件MongoDB Regex Search on Integer Value

所以...如果我在终端提出请求:

db.myCollection.find({$where: "/^21.*/.test(this.uId.internalId)"}) - it works as expected

但是如果我尝试用mongoose发送相同的请求 - 我有一个例外:

  

TypeError:无法读取属性' internalId'未定义的

在其他情况下,如果我尝试发送这样的内容:

db.myCollection.find({$where: "/^21.*/.test(this.phone)"}) - it also works

有人能告诉我如何使用正则表达式在嵌套对象中使用数字字段进行搜索吗?

代码示例

//This function return object wich will be passed to model.find();
//key - it is field vich I will use for search on
//value - I tnink it' clear
function numberFilter(key, value) {
    var where = '$where';
    obj[where] = '/^' + value + '.*/.test(this.' + key + ')';
    console.log('obj', obj);
    return obj;
}

在这里,我获得了带有搜索参数的对象,并将其传递给find()方法

var query= numberFilter('uId.internalId', 123); // won't work
var query1= numberFilter('phone', 123); // it will work

return MyModel
    .find(query)
    .then(success)
    .catch(next);

function success(data) {
    res.json(data);
}

0 个答案:

没有答案