首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mongo自己的http rest接口上传递regex查询的语法

在mongo自己的http rest接口上传递regex查询的语法
EN

Stack Overflow用户
提问于 2012-01-30 22:48:36
回答 2查看 2.2K关注 0票数 0

我想使用标准的MongoDB ReST接口( http://www.mongodb.org/display/DOCS/Http+Interface )来搜索和返回在某个字段上具有通配符匹配的记录-在本例中是'link_url‘。例如,传递'acko‘来匹配www.stackoverflow.com等。

看起来,如果我想要一个精确的匹配,我会使用

代码语言:javascript
运行
复制
http://127.0.0.1:28017/databaseName/collectionName/?filter_link_url=value

但是我想传递一个正则表达式来允许部分匹配

我尝试过将上面的URL以不同的方式与语法结合起来,比如它们的代码片段:

代码语言:javascript
运行
复制
"match" : { "$regex" : "foo", "$options" : "ig" }

但没那么走运。有人能帮上忙吗?我只需要做查找,理想情况下我不想运行另一个接口。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 23:44:45

它看起来像REST接口(可能是为了安全起见),它自动转义传递的字段,并且嵌入式查询是不可能的。这意味着这两种传递所需URL格式的方法似乎都被排除在外。例如:

代码语言:javascript
运行
复制
db.collection.find({"url" : /acko.*/i})

从理论上讲,这将转化为:

代码语言:javascript
运行
复制
http://127.0.0.1:28017/databaseName/collectionName/$cmd/?filter_url=/acko.*/i

不幸的是,它实际上被传递为(请注意引号):

代码语言:javascript
运行
复制
{ "url" : "/acko.*/i" }

另一种表单也存在类似的问题,您可以将$regex命令作为嵌入式文档传入。这以及其他问题就是为什么内置REST接口不是针对mongoDB运行查询的推荐解决方案。相反,您应该考虑Sleepy Mongoose)或node.js

我知道您不想使用另一个接口,但有时这真的是最好的选择。

票数 -1
EN

Stack Overflow用户

发布于 2014-05-17 04:57:20

我知道这与你的问题本身无关,但我在mongolab上尝试了一下,这对我很有效:

代码语言:javascript
运行
复制
https://api.mongolab.com/api/1/databases/myDBName/collections/categories/?apiKey=myAPIKey&q={"keyname":{"$regex":"^Kampanje$","$options":"i"}}

这将不敏感地查找所有名为"Kampanje“的键名。请注意,URL不能包含空格。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9065702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档