Fru*_*ful 18 mongodb mongodb-shell
我在mongo shell中运行以下查询:
db.Profiles.find ( { $or: [ {"name": "gary"}, {"name": "rob"} ] } )
Run Code Online (Sandbox Code Playgroud)
它只是没有按预期返回(JSON)?
AD7*_*six 48
对于问题中的查询,使用$ in更合适
db.Profiles.find ( { "name" : { $in: ["gary", "rob"] } } );
Run Code Online (Sandbox Code Playgroud)
有一个缺失的引用 - cli正等着你完成你或你的第二部分:
db.Profiles.find ( { $or : [ { "name" : "gary" }, {"name":"rob} ] } )
..............................................................^
Run Code Online (Sandbox Code Playgroud)
您需要充分完成查询,以便cli解析它,然后说出语法错误.
正如评论所指出的,如果你想在不区分大小写的方式进行搜索,那么你要么使用$or一个$正则表达式:
db.Profiles.find ( { $or : [ { "name" : /^gary/i }, {"name": /^rob/i } ] } )
Run Code Online (Sandbox Code Playgroud)
或者,您只需使用一个正则表达式:
db.Profiles.find ( { "name" : /^(gary|rob)/i } )
Run Code Online (Sandbox Code Playgroud)
但是,不以固定字符串开头的正则表达式查询不能使用索引(它不能使用索引并且有效地"从此处开始直到找不到匹配然后保释")因此是次优的.如果这是您的要求,最好存储一个规范化的名称字段(例如name_lc- 小写名称)并对其进行查询:
db.Profiles.find ( { "name_lc" : { $in: ["gary", "rob"] } } );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20328 次 |
| 最近记录: |