我使用快递代码搜索mongo集合中的字符串
> var criteria = options.searchId;
> criteria = '.*' + criteria + '.*';
> this.find( { $or: [ { 'content' : { $regex : criteria , $options :
> 'i' }} , { 'title' : { $regex : criteria , $options : 'i' }} ]} )
但是当我搜索test test
时我没有得到任何结果,但内容列中存在相同的内容(我认为该值正在测试%20test)test
我得到了正确的结果。我的问题是一个声明没有被搜索,但在搜索时只有一个单词。
答案 0 :(得分:1)
它对我有用:
> db.articles.drop()
false
> db.articles.insert({"title": "first", "content": "foo bar"})
> db.articles.insert({"title": "second", "content": "a test test b"})
> db.articles.insert({"title": "third", "content": "only test"})
> db.articles.insert({"title": "test test in title", "content": "lorem ipsum"})
> var query = {"$regex": ".*test test.*", "$options": "i"}
> db.articles.find({"$or": [{"content": query}, {"title": query}]})
{ "_id" : ObjectId("52fb789ff00e23295fe08d86"), "title" : "second", "content" : "a test test b" }
{ "_id" : ObjectId("52fb78f5f00e23295fe08d88"), "title" : "test test in title", "content" : "lorem ipsum" }
这是你期望的吗?
如果您有test%20test
而不是test test
,那么您的网络框架中的网址参数处理可能会出现问题。