我的应用程序有以下堆栈:
Ruby上的Sinatra - > MongoMapper - > MongoDB的
应用程序在数据库中放入了几个条目。为了与其他页面交叉,我添加了某种语法。 e.g:
咖啡是一种由豆制成的黑色含咖啡因的液体。 {茶}由叶子制成。这两种饮料有时都与{milk}
一起享用
在此示例中,{Tea}将链接到另一个关于茶的数据库条目。
我试图查询我的mongoDB有关所有链接的字词'。通常在ruby中我会这样做:/{([a-zA-Z0-9])+}/
其中()
将返回匹配的字符串。然而,在mongo,我得到了整个记录。
我怎样才能让mongo只返回我正在寻找的记录的匹配部分。因此,对于上面的示例,它将返回:
["Tea", "milk"]
我试图避免将整个记录拉入Ruby并在那里处理它们
答案 0 :(得分:1)
我不知道我是否理解。
db.yourColl.aggregate([
{
$match:{"yourKey":{$regex:'[a-zA-Z0-9]', "$options" : "i"}}
},
{
$group:{
_id:null,
tot:{$push:"$yourKey"}
}
}])
如果您不想在tot
中使用$addToSet
答案 1 :(得分:0)
我解决此问题的方法是使用字符串聚合命令来提取StartingIndexCP,结束indexCP和substrCP命令来提取我想要的字符串。由于您可以使用多个{},因此需要一个投影来一次识别这些CP索引,而另一个投影来提取所需的单词。希望这会有所帮助。