2017-12-05 8 views
-1

ので、私は次のような構造があるMongoDBの中のコレクションがありますし、他の人をいくつかの要素が数値フィールドが2に1人に設定されているこのコレクションのグループ一定の基準による収集

{ 
    "_id": 129flaslkfja, 
    "number": 10 
} 

を3などをランダムに並べ替えます。私は、次のポジションにある番号1のすべてのモデルを番号2のすべてのモデルなどの最初の位置に持つ配列を取得する必要があります。私はループと単純な検索でこれを行うことができることを知っていますが、パフォーマンス面でよりシンプルでクリーンで効果的な方法があるかどうかを知りたいと思っています。

私は$ group、$ matchで試しましたが、これは私が望むものではありません。例えば、これは私のデータベース内のデータ

されています:

[{ 
    "_id": a1, 
    "number": 1 
}, 
{ 
    "_id": a2, 
    "number": 3 
}, 
{ 
    "_id": a3, 
    "number": 2 
}, 
{ 
    "_id": a4, 
    "number": 2 
}, 
{ 
    "_id": a5, 
    "number": 2 
}, 
{ 
    "_id": a6, 
    "number": 1 
}] 

だから私はこのような数値でグループ化したい:あなたが行うことができますRubyで

[ 
    [{ 
     "_id": a1, 
     "number": 1 
    }, 
    { 
     "_id": a6, 
     "number": 1 
    }], 

    [{ 
     "_id": a3, 
     "number": 2 
    }, 
    { 
     "_id": a4, 
     "number": 2 
    }, 
    { 
     "_id": a5, 
     "number": 2 
    }], 

    [{ 
     "_id": a2, 
     "number": 3 
    }] 
] 
+1

義和の下に試すことができますか?これを試して; 2つまたは3つ以上の入力文書を編集して追加します(小文字です)。出力文書をそのように表示したい場合の例を示します。 –

答えて

2

また、コード

original_list.group_by(&:number).values 
1

original_list.group_by {|x| x[:number]}.values 

あなたがRubyソリューションを求めているのかどうかは不明です。

関連する問題