MongoDB中的通配符搜索

时间:2016-06-29 02:01:19

标签: javascript arrays json node.js mongodb

有人可以帮我解决MongoDB中的以下通配符搜索条件吗? 文件:

{"path":"foo/bar/{id}/somethingelse"}

{"path":"foo/bar/*/somethingelse"}

所以我希望在发现类似这样的查找请求时获取此文档:

db.collection.find({path:"foo/bar/1/somethingelse"})

db.collection.find({path:"foo/bar/2/somethingelse"})

因此,如果文档中有一些通配符,我希望将其与匹配该模式的条件进行匹配。

1 个答案:

答案 0 :(得分:2)

对于像这样的通配符,你可以使用类似于:

的正则表达式
db.collection.find({"path": new RegExp("foo/bar/.*?/somethingelse")})

但是,如果我正确理解了您的问题,那么您的集合中的单个文档的路径为{"path":"foo/bar/{id}/somethingelse"},并且如果查询实际上是{{1},则您希望将其返回}}。要做到这一点,你可能最好在搜索之前进行搜索,以便更改实际查询。

db.collection.find({path:"foo/bar/1/somethingelse"})

希望这有帮助!

根据评论进行修改

要执行反向通配符匹配,以下内容应该有效,返回请求的文档和任何匹配的通配符。您需要定义每个实际通配符的工作原理。

path = path.replace(/foo\/bar\/(.*)\/somethingelse/, 'foo/bar/{id}/somethingelse')
db.collection.find({path:path})