包含查询的Mongodb distinct查询

时间:2014-11-13 11:08:27

标签: regex mongodb mongodb-query

我有一个mongo集合用户,其中包含以下数据: -

{
 id : 1,
 name : "gaurav",
 skills  : "C++ HTML CSS"
}

当我使用以下查询搜索具有 C ++ 技能的所有用户时,我按预期获得了正确的结果

db.user.find({skills:{contains:"C++"}});

但是当我使用相同的条件搜索用户的所有唯一名称时,我没有得到任何所需的结果

db.user.distinct('name',{skills:{contains:"C++"}});

任何人都可以帮我解决我做错的事吗?

2 个答案:

答案 0 :(得分:2)

尝试使用REGEX,如下面的查询

db.user.distinct("name",{"skills":{"$regex":"C++.*"}})

答案 1 :(得分:2)

“contains”不是MongoDB查询的有效关键字。您需要 $regex ,它提交符合pcre规范的一般“正则表达式”语句:

db.user.distinct( "name", { "skills": { "$regex": "C\+\+" } })

如果使用JavaScript作为您的语言,那么这也是安全的:

db.user.distinct( "name", { "skills": /C\+\+/ })

确定字符串“C ++”是否出现在被测字段的字符串值中。 “{1}}字符在”regex“操作中保留,因此您需要使用+ char作为标准转义机制来转义它。

在您的数据上,这是结果:

\