Abh*_*eet 5 javascript arrays json mongodb node.js
有人可以帮助我使用 MongoDB 中的以下通配符搜索条件吗?文档:
{"path":"foo/bar/{id}/somethingelse"}
Run Code Online (Sandbox Code Playgroud)
或者
{"path":"foo/bar/*/somethingelse"}
Run Code Online (Sandbox Code Playgroud)
因此,当出现类似这样的查找请求时,我想获取此文档:
db.collection.find({path:"foo/bar/1/somethingelse"})
Run Code Online (Sandbox Code Playgroud)
或者
db.collection.find({path:"foo/bar/2/somethingelse"})
Run Code Online (Sandbox Code Playgroud)
因此,如果文档有一些通配符,我想将它与匹配该模式的标准进行匹配。
对于这样的通配符,您可以使用正则表达式,如下所示:
db.collection.find({"path": new RegExp("foo/bar/.*?/somethingelse")})
Run Code Online (Sandbox Code Playgroud)
但如果我正确理解你的问题,你的集合中有一个文档,其路径为{"path":"foo/bar/{id}/somethingelse"},如果查询实际上是 for ,你想返回它db.collection.find({path:"foo/bar/1/somethingelse"})。为此,最好在搜索之前进行搜索替换,以更改实际查询,如下所示。
path = path.replace(/foo\/bar\/(.*)\/somethingelse/, 'foo/bar/{id}/somethingelse')
db.collection.find({path:path})
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
根据评论进行编辑
要进行反向通配符匹配,应执行以下操作,返回请求的文档和任何匹配的通配符。您需要定义每个实际通配符的含义才能使其发挥作用。
path.replace(/foo\/bar\/(.*)\/somethingelse/, 'foo/bar/($1|{id}|\*)/somethingelse')
db.collection.find({path: new RegExp(path)})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3149 次 |
| 最近记录: |