我想像下面的场景一样在 MongoDB 中搜索结果。
我有像 Hello World, I am here.
这样的数据
我的查询是:
{"$or": [{"data.title": {"$regex": search}}]}; //search = Hello
所以我正在使用 $regex 搜索它。但问题是,如果我输入 search = H,它会再次返回数据
我只想在完整单词的基础上进行搜索。 (例如:Hello 或 World)不基于字符(例如:H 或 e)
最佳答案
您可以使用\b(单词边界)运算符,例如:
{"$or": [{"data.title": {"$regex": /\bHello\b/i}}]}
这样,搜索“/\bH\b/”就不会匹配到“Hello”。
否则,在标题字段上使用 $text 索引,然后执行 $text 搜索:
{"$or": [{$text:{$search:"Hello"}}]}
有关文本搜索的更多信息,请查看文档:http://docs.mongodb.org/manual/administration/indexes-text/
关于javascript - 正则表达式匹配mongodb中的整个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936131/