使用URI模式匹配查找文档

问题描述:

我的收藏包含API URI端点信息。我希望能够将URI作为搜索字符串传递到MongoDB,并找到与URI模式匹配的文档。使用URI模式匹配查找文档

例如

如果我通过“/ API /名/杰森/ profile文件”

我要搜索所有的文件我的集合包含文档中......

URI :“/ api/name /(:*)/ profile”

(:*)是通配符。

有关我该如何去做这件事的任何建议?

UPDATE ::: 为了澄清...

那会,如果我有一个简单的模式并没有真正改变工作。但问题是我可能不知道URI的哪一部分是动态的。所以我真正需要做的是将我的URI与一组包含不同URI模式的文档进行比较,以便我的文档可能具有这样的模式。

/api/name/{id}/ 
/api2/event/{id} 
/api/events/{from_date}/{to_date} 

我想要做的是找到一个最适合我传递的URI模式的文档。

因此,如果我通过“/ api/events/20170102/20170330”,那么Mongo将返回具有“uri”:“/ api/events/{from_date}/{to_date}”格式的文档。

+0

https://docs.mongodb.com/manual/reference/operator/query/regex/#op._S_regex –

+0

什么是集合名称,并在其领域应该查询搜索?在你的例子中,我假设它应该在'name'字段的'profile'集合中查找文档,对吗? – chridam

+0

是的...收集是apis和字段是uri – TheJason

你可以尝试这样的: -

db.collection.find({ 'URI': { $regex: '/api/name/*/profile', $options: 'i' } }); 
+0

看到我在上面的问题更新... – TheJason

+0

总之,如果我只有一个URI模式进行比较,这将工作。但我的问题是,我有几百个模式来比较(这是一个非常大的API平台) – TheJason