我想使用标准的MongoDB ReST接口( http://www.mongodb.org/display/DOCS/Http+Interface )来搜索和返回在某个字段上具有通配符匹配的记录-在本例中是'link_url‘。例如,传递'acko‘来匹配www.stackoverflow.com等。
看起来,如果我想要一个精确的匹配,我会使用
http://127.0.0.1:28017/databaseName/collectionName/?filter_link_url=value但是我想传递一个正则表达式来允许部分匹配
我尝试过将上面的URL以不同的方式与语法结合起来,比如它们的代码片段:
"match" : { "$regex" : "foo", "$options" : "ig" }但没那么走运。有人能帮上忙吗?我只需要做查找,理想情况下我不想运行另一个接口。
发布于 2012-01-30 23:44:45
它看起来像REST接口(可能是为了安全起见),它自动转义传递的字段,并且嵌入式查询是不可能的。这意味着这两种传递所需URL格式的方法似乎都被排除在外。例如:
db.collection.find({"url" : /acko.*/i})从理论上讲,这将转化为:
http://127.0.0.1:28017/databaseName/collectionName/$cmd/?filter_url=/acko.*/i不幸的是,它实际上被传递为(请注意引号):
{ "url" : "/acko.*/i" }另一种表单也存在类似的问题,您可以将$regex命令作为嵌入式文档传入。这以及其他问题就是为什么内置REST接口不是针对mongoDB运行查询的推荐解决方案。相反,您应该考虑Sleepy Mongoose)或node.js
我知道您不想使用另一个接口,但有时这真的是最好的选择。
发布于 2014-05-17 04:57:20
我知道这与你的问题本身无关,但我在mongolab上尝试了一下,这对我很有效:
https://api.mongolab.com/api/1/databases/myDBName/collections/categories/?apiKey=myAPIKey&q={"keyname":{"$regex":"^Kampanje$","$options":"i"}}这将不敏感地查找所有名为"Kampanje“的键名。请注意,URL不能包含空格。
https://stackoverflow.com/questions/9065702
复制相似问题