Mongoid 在 pluck() 中加入三列中的两列

Mongoid join two of three columns in pluck()

在控制器中,我需要创建一个 returns:

的嵌套数组

[["first_name - last_name", "id"]]

来自 persons table 其中包含三列:first_name、last_name、id。

下面的查询用“-”连接了所有三列,但我只需要连接前两列。我将如何实现这一目标?

Person.pluck("first_name", "last_name", "id").map{|e| e.join(' - ')}

注意:这个答案是在答案被标记为[rails]时写的,没有提到Mongo。

一般来说,我建议避免在 ActiveRecord 查询中使用 SQL 文字,但这可以完成工作:

 Person.pluck("concat(first_name, ' - ', last_name)", :id)

如果你想走 SQL 文字路线,@coreyward 的答案是有效的。您还可以将 map 块更改为以下内容,这不是非常优雅但有效。

map{|e| [e[0..1].join(' - '), e[2]]}