【发布时间】:2015-12-25 06:44:15
【问题描述】:
作为 mongo 的新手,卡在条件查询中: 我想根据 3 个条件(名字、姓氏和电子邮件 ID)进行搜索: 当所有字段都存在时,以下查询完美运行:
db.students.find( { $and: [ { first_name: /^Abc$/i }, { last_name: 'Xyz'},{email_id:'gd@he'} ]})
问题是当我不提供电子邮件 ID 时,查询不会返回任何结果,因为它认为电子邮件 ID 为空并搜索组合“Abc Firtis null”, 我希望实现以下场景: 我有一群学生:
- FirstName: 1. ABC 2. ABC 3.ABC
- LastName: 1.XYZ 2. XY 3. XZ
- EmailID: 1.abc@xyz 2.Ab@xy 3.Ab@xz
如果在搜索中只输入名字,它应该返回所有 3 个结果 如果用户输入名字和姓氏,它应该返回前两个结果,如果用户输入所有三个详细信息,它应该只返回一个结果。
任何线索将不胜感激。
【问题讨论】:
-
在这种情况下,为什么要使用 $and 运算符?只需使用
db.students.find( { first_name: /^Abc$/i, last_name: 'Firtis', email_id:'gd@he'} ) -
这作为一个或,即使我输入所有三个值也会给我所有 3 个结果
标签: mongodb mongodb-query