从mongodb中不同对象的字符串数组列表中搜索查询字符串

时间:2017-03-02 11:50:45

标签: node.js mongodb mongodb-query

我想针对存储在所有对象呈现的数组中的字符串数组搜索查询字符串

我的数据库结构如下所示

[0: 
     destination: ......
     name: ......
     name_list: [""some place", "some place 2", "some place3"]
1:
    destination: ......
    name: ......
    name_list: [""some place4", "some place 5", "some place3"]
2:
    destination: ......
    name: ......
    name_list: [""some place56", "some place 34", "some place3"]

and so on .... 
]

让我们说

我想得到name_list数组包含字符串" someplace3"的所有对象。但我收到的查询可能只是" place3",因为用户可能不知道完整或确切的名称。我无法想象如何搜索,我正在使用expressjs模块在我的mongodb数据库中搜索,如:

route.find({name_list: "place3"}, function(err, routes) {
    if (err) throw err;
    routeTosend = routes;
});

但显然我没有得到任何结果,但如果我搜索完全像某个地方3它会返回所有对象。

我对数据库是全新的,因此mongodb也是如此,如果有人能提供帮助,我会非常感激。

1 个答案:

答案 0 :(得分:1)

您必须使用mongodb提供的$regex。你可以做这样的事情

route.find({"name_list": {$regex : /.*places3.*/}}, function(err, routes) {
   if (err) throw err;
   routeTosend = routes;
});

要在正则表达式中使用变量,您必须使用RegExp构造函数从字符串创建正则表达式对象

var query= "place"; 
regx = new RegExp('.*' + query + '.*','i');

route.find({"name_list": regx}, function(err, routes) {
   if (err) throw err;
   routeTosend = routes;
});