有人可以帮我解决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"})
因此,如果文档中有一些通配符,我希望将其与匹配该模式的条件进行匹配。
答案 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})