【发布时间】:2013-09-16 08:28:09
【问题描述】:
我想通过first_name 和last_name 在搜索查询中键入full_name 来搜索user 集合。 full_name 的搜索查询将是 first_name,由“空格”分隔,后跟 last_name。 first_name 和 last_name 都可能有空格。在mysql中我会这样做
SELECT * FROM users WHERE(CONCAT(users.first_name, users.last_name) == 'Peter Griffin')
注意:我正在使用mongo -v 2.2.0,我认为concat 可以工作,但我无法测试它,因为2.2.0 不支持 concat 函数
有没有办法在mongodb中实现上述查询?
【问题讨论】:
-
为什么不将字符串分成名字和姓氏并搜索呢?
-
@WiredPrairie 是的,我知道我可以,但正如我在问题中提到的,
first_name和last_name都可以有空格。例如,您将如何搜索first_name='Peter Löwenbräu'和last_name='Griffin'并且用户输入搜索查询为“Peter Löwenbräu Griffin”,您会将“Peter Griffin”拆分为名字还是将“Löwenbräu Griffin”拆分为姓氏?跨度> -
无论如何,您都需要规范化数据并删除空格等。也许将名称存储为 fullName 以针对此搜索进行优化。
-
@WiredPrairie,从优化的角度来看,您的评论很有意义。展望未来,我可以以一种从长远来看有益的方式设计集合,但我正在寻找一种灵活的解决方案来连接两个键的值,然后进行比较。
-
我不建议别的原因是因为它在 MongoDB 中不存在。