使用mongoDB搜索值数组

时间:2015-01-31 11:34:03

标签: node.js mongodb

我有一个只包含1个文档的集合:

events: ['some event', 'another one', 'and another'];

如何对此进行搜索,如果搜索参数是" som",则返回的文档将是"某些事件"。

目前我有以下内容:

var collection = db.collection('suggestions');
collection.ensureIndex({events: "text"}, function(){});

collection.find({ $text: { $search: term } }).toArray(function(err, docs){
    if(err){
        console.log(err);
    }else{
        res.send(docs);
    }
});

其中term是搜索词 - 但这总是返回一个空数组[]。

可以用mongoDB完成吗?

1 个答案:

答案 0 :(得分:1)

我认为搜索单词的一部分需要使用regex个查询,因为文字索引,无论多么有用,据我所知,可能只能用来查找整个单词。

您可以使用以下查询找到该单词的一部分:

var collection = db.collection('suggestions');
collection.ensureIndex({events: 1}, function(){});

var query = { events: new RegExp( term ) };

collection.find(query).toArray(function(err, docs){
    if(err){
        console.log(err);
    }else{
        res.send(docs);
    }
});

在上面,还有一个在事件数组上创建的多键索引(作为考虑的选项)。

我希望它至少有点帮助。