2017-01-15 5 views
0

の二つは、私が返すネストされた配列を作成する必要が参加:Mongoidはむしれにおける3つの列()コントローラで

[[ "FIRST_NAME - 姓"、 "ID"]から

personsテーブルには、first_name、last_name、idの3つのカラムが含まれています。

私はすべての3つを ' - 'で結合する以下のクエリを持っていますが、最初の2つの列を結合するだけです。どうすればこれを達成できますか?

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

答えて

0

答えは動作します。 mapブロックを次のように変更することもできます。これはあまり優雅ではありませんが機能します。

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

注:答えは[レール]をタグ付けされたときに、この答えが書かれたとは言及がモンゴで作られませんでした。

は、一般的に私は、ActiveRecordのクエリでSQLリテラルを避けることをお勧めしますが、これは仕事を取得します:あなたはSQLリテラルのルートを移動する場合@coreywardによって

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

これをレールで行う方法はありますか?私はモンゴイドを使用しており、リテラルの使用を避けようとしています。 – HoosierCoder

+0

@HoosierCoderこれはRails用ですが、データベースでデータ操作を処理する必要があります。常にパフォーマンスが向上し、[MongoDBは連結をサポートします](https://docs.mongodb.com/manual/reference/operator/aggregation/concat/)も同様です。あなたはそれを使うべきです。 – coreyward

関連する問題