MYSQL concat()的mongodb等价物

MYSQL concat()的mongodb等价物,mysql,mongodb,concat,Mysql,Mongodb,Concat,我想通过在搜索查询中键入全名来搜索用户集合。全名的搜索查询将是名,以“空格”分隔,然后是姓。first\u name和last\u name可能都有空格。在mysql中,我会这样做 SELECT * FROM users WHERE(CONCAT(users.first_name, users.last_name) == 'Peter Griffin') 注意:我正在使用mongo-v2.2.0,我认为这可以工作,但我无法测试它,因为2.2.0不支持concat函数 有没有办法在mongodb

我想通过在搜索查询中键入
全名
来搜索
用户
集合。
全名
的搜索查询将是
,以“空格”分隔,然后是
first\u name
last\u name
可能都有空格。在mysql中,我会这样做

SELECT * FROM users WHERE(CONCAT(users.first_name, users.last_name) == 'Peter Griffin')
注意:我正在使用
mongo-v2.2.0
,我认为这可以工作,但我无法测试它,因为
2.2.0
不支持concat函数

有没有办法在mongodb中实现上述查询?

您可以尝试以下方法:

db.users.find( { $where: function() { return (this.first_name.concat(this.last_name) == "Peter Griffin") } } );

为什么不将字符串拆分为名字和姓氏并搜索它?@wiredparie是的,我知道我可以,但正如我在问题中提到的,
first\u name
last\u name
都可以有空格。例如,如果用户以“Peter Löwenbräu Griffin”的身份输入搜索查询,您将如何搜索
firstu name='Peter Löwenbräu'
lastu name='Griffin'
,您将“Peter Löwenbräu Griffin”拆分为名字还是“Löwenbräu Griffin”为姓氏?您需要规范化数据并删除空格,等等。可能将这些名称存储为全名,以便为此搜索进行优化。@WiredPairie,从优化的角度来看,您的评论是有意义的。继续前进,我可以以这样的方式设计这个系列,从长远来看,它将是有益的,但我正在寻找一种灵活的解决方案,将两个键的值串联起来,然后与之进行比较。我之所以不建议使用其他方法,是因为它在MongoDB中不存在。当然,要让它在您的系统上运行,您必须非常疯狂,$where如果没有它的索引用法就足够糟糕了。我非常感谢任何更好的建议,我很高兴用它更新这个答案。聚合样式$concat是否使用索引?不,tbh没有好的方法,这仍然是MongoDB的缺陷之一,它需要一个concat操作。一种方法可以是在聚合中投影一个concat文档,然后进行$match,但不确定是否会使用索引,编辑:不,即使这样也不会使用索引