我是mongodb的新手。我有以下文件:
[
{
"_id": 1,
"emp_id": 7369,
"ename": "smith",
"job": "analyst",
"mgr": 7902,
"hiredate": "17/12/1980",
"salary": 800,
"comm": null,
"deptno": 20
},
{
"_id": 5,
"emp_id": 7654,
"ename": "martin",
"job": "salesman",
"mgr": 7698,
"hiredate": "28/09/1981",
"salary": 1250,
"comm": 1400,
"deptno": 30
},
{
"_id": 8,
"emp_id": 7839,
"ename": "king",
"job": "president",
"mgr": null,
"hiredate": "17/11/1981",
"salary": 5000,
"comm": null,
"deptno": 10
},
{
"_id": 13,
"emp_id": 7934,
"ename": "miller",
"job": "clerk",
"mgr": 7782,
"hiredate": "23/01/1982",
"salary": 1300,
"comm": null,
"deptno": 10
}
]
但我想显示enames
有'我'的文件是second
字符。我经历了几个网站,但我找不到任何解决方案。
答案 0 :(得分:3)
您可以使用$regex
operator来查询文档的文本内容。
为模式匹配字符串提供正则表达式功能 在查询中。 MongoDB使用Perl兼容的正则表达式(即 “PCRE”)版本8.36,支持UTF-8。
对于您的情况,查询看起来像这样:
db.col.find({ ename: { $regex: /^.i/ } });
因此,正则表达式会查找一个模式,该模式将任何字符作为字符串中的第一个字符,后跟字符i
。
还有一个"短手"此查询的版本,因为如果您传递的值是正则表达式,则实际上不需要指定$regex
运算符。
db.col.find({ ename: /^.i/ });
由于要匹配的值不是字符串而是字面正则表达式(它没有引号而是围绕它的斜线),因此mongo将知道执行正则表达式匹配。
我更喜欢第一个例子,因为它更明确,并且没有"猜测工作"对于遇到代码的未来开发人员。