有人可以帮我在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"})
因此,如果文档有一些通配符,我想匹配它以匹配该模式的条件.
最佳答案 对于像这样的通配符,你可以使用正则表达式,如下所示:
db.collection.find({"path": new RegExp("foo/bar/.*?/somethingelse")})
但是如果我正确地理解了你的问题,你的集合中有一个文档,其路径为{“path”:“foo / bar / {id} / somethingelse”},如果查询实际上是db,你想要返回它.collection.find({路径: “富/酒吧/ 1 / somethingelse”}).要做到这一点,你可能最好在搜索之前进行搜索,以便像这样更改实际查询.
path = path.replace(/foo\/bar\/(.*)\/somethingelse/, 'foo/bar/{id}/somethingelse')
db.collection.find({path:path})
希望这可以帮助!
根据评论进行编辑
要执行反向通配符匹配,以下内容应该有效,返回所请求的文档和任何匹配的通配符.您需要定义每个实际通配符的工作原理.
path.replace(/foo\/bar\/(.*)\/somethingelse/, 'foo/bar/($1|{id}|\*)/somethingelse')
db.collection.find({path: new RegExp(path)})