javascript – 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"})

因此,如果文档有一些通配符,我想匹配它以匹配该模式的条件.

最佳答案 对于像这样的通配符,你可以使用正则表达式,如下所示:

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)})
点赞