我有一个mongo集合用户,其中包含以下数据: -
{
id : 1,
name : "gaurav",
skills : "C++ HTML CSS"
}
当我使用以下查询搜索具有 C ++ 技能的所有用户时,我按预期获得了正确的结果
db.user.find({skills:{contains:"C++"}});
但是当我使用相同的条件搜索用户的所有唯一名称时,我没有得到任何所需的结果
db.user.distinct('name',{skills:{contains:"C++"}});
任何人都可以帮我解决我做错的事吗?
答案 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作为标准转义机制来转义它。
在您的数据上,这是结果:
\