【发布时间】:2017-02-09 21:01:36
【问题描述】:
我想改进我的搜索方法 - 应该不区分大小写。在我的设置中有五个不同的集合,我想搜索它们的 title 字段。
我还需要获得部分结果(至少 3 个字符)。
示例
// Collection 1
{ title: 'Sample' },
{ title: 'Another sample' }
{ title: 'This is an example' }
// Collection 2
{ title: 'Something else' },
{ title: 'A sample document' }
{ title: 'This is another example' }
-
Ample: 所有文档,除了第二个集合的第一个文档 -
Sample:集合1的前两个文档和集合2的第二个文档 -
another:集合1的第二个文档 -
is: 不应该给出任何结果(
到目前为止,我已经做到了
db.collection.find({ title: new RegExp(value, 'i') }).fetch()
...对于每个集合并将结果合并到一个数组中。
但我认为这不是最佳选择,因为使用了正则表达式,并且所有文档都必须由数据库搜索。
所以我转而使用全文搜索。我向title 添加了一个索引并尝试了这个:
db.collection.find({ $text: { $search: value } }).count()
但是Samp 甚至没有给我第一个文件。
最后但并非最不重要的一点是,我不知道如何搜索所有五个集合以将所有匹配项作为一个结果。
【问题讨论】:
标签: javascript regex mongodb