Mongodb Mongo按正则表达式查找:仅返回匹配字符串

Mongodb Mongo按正则表达式查找:仅返回匹配字符串,mongodb,sinatra,mongomapper,Mongodb,Sinatra,Mongomapper,我的应用程序具有以下堆栈: 红宝石上的Sinatra->MongoMapper->MongoDB 应用程序在数据库中放入多个条目。为了链接到其他页面,我添加了一些语法。e、 g: 咖啡是一种由咖啡豆制成的含咖啡因的黑色液体。茶是用树叶做的。这两种饮料有时与牛奶一起饮用 在本例中,{Tea}将链接到另一个关于Tea的DB条目 我试图查询我的mongoDB关于所有“链接术语”的信息。通常在ruby中,我会这样做:/{([a-zA-Z0-9])+}/,其中()将返回匹配的字符串。但在蒙戈,我获得了全部

我的应用程序具有以下堆栈:

红宝石上的Sinatra->MongoMapper->MongoDB

应用程序在数据库中放入多个条目。为了链接到其他页面,我添加了一些语法。e、 g:

咖啡是一种由咖啡豆制成的含咖啡因的黑色液体。茶是用树叶做的。这两种饮料有时与牛奶一起饮用

在本例中,{Tea}将链接到另一个关于Tea的DB条目

我试图查询我的mongoDB关于所有“链接术语”的信息。通常在ruby中,我会这样做:
/{([a-zA-Z0-9])+}/
,其中
()
将返回匹配的字符串。但在蒙戈,我获得了全部记录

我怎样才能让mongo只返回我正在寻找的唱片的匹配部分。因此,对于上面的示例,它将返回:

["Tea", "milk"]

我试图避免将整个记录拉入Ruby并在那里处理它们

我不知道我是否理解

db.yourColl.aggregate([
{
    $match:{"yourKey":{$regex:'[a-zA-Z0-9]', "$options" : "i"}}
},
{
    $group:{
        _id:null,
        tot:{$push:"$yourKey"}
    }
}])

如果您不想在
tot
中使用duplicate,请使用
$addToSet
我解决此问题的方法是使用字符串聚合命令提取StartingIndexCP,使用ending indexCP和substrCP命令提取我想要的字符串。因为你可以有多个{},你需要有一个投影来在一个镜头中识别这些CP索引,并有另一个投影来提取你需要的单词。希望这有帮助。

谢谢!这将返回整个字段条目。因此,在我的例子中,它将返回
咖啡是一种由咖啡豆制成的黑色含咖啡因液体。茶是用树叶做的。这两种饮料有时与{milk}
一起饮用。我们可以只提取
Tea
milk
?也许你可以尝试使用$or,或者$and
$match:{$or:[{'name':/Tea/i},{'name':{$regex:'milk',$options:'i'}]}
这是$regex的两种方法看看这个,我有一个类似的问题。有人找到解决办法了吗?我在Stackoverflow上找不到任何东西。