本文共 2034 字,大约阅读时间需要 6 分钟。
阅读目录
MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。
> db.col.find(){ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }{ "_id" : ObjectId("56c6bc9e64799370c0ef358c"), "x" : "nothing" } > db.col.find({x:/world/}){ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] } > db.col.find({x:{$regex:"world"}}){ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
上面后两种操作是等价的。
> db.col.find({x:{$regex:"world", $options:"$i"}}){ "_id" : ObjectId("56c6bd9964799370c0ef358d"), "x" : "hihi WORLD" }{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
or
> db.col.find({x:/world/i}){ "_id" : ObjectId("56c6bd9964799370c0ef358d"), "x" : "hihi WORLD" }{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
> db.col.find({tags:/b/}){ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }{ "_id" : ObjectId("56c6bedf64799370c0ef358e"), "tags" : [ "abc", "m" ] }
可见数组中包含字符‘b’的都找出来了(包括“abc”)。
需要用eval将组合的字符串进行转换
> v="world"world> db.col.find({x:eval("/" + v + "/i")}){ "_id" : ObjectId("56c6bd9964799370c0ef358d"), "x" : "hihi WORLD" }{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/5201225.html,如需转载请自行联系原作者