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