

配列１[1,2,...,20]と配列２[21,22,..31]があり、配列１から任意の３要素と配列２から任意の２要素(重複なし)を取り出して,要素長＝５（例：[1,2,3,21,22]）の全ての組合せの配列の配列(array
of
arrays)を作りたい。SQLではネット上に組合せ（重複なし）の例がいくつか見つかりましたが、これをMongoDBで行う場合、どのようなクエリーを書いたらよいのでしょうか？  
勿論、できるだけ実行速度が速い方が望ましいです。


CC BY-SA 3.0
2015-04-22T13:49:41.720
9471
2015-05-28T02:38:28.807
9447
question
mongodb
MongoDB で組合せの生成


MongoDBは、AggregationフレームワークやMap/Reduceフレームワークだけでなく、通常の並べ替えやフィルター機能も持っていますが、（サーバ側のコレクションか配列の）結合には対応していません>。

MongoDBを永続性記憶装置として使用する場合は、クライアント側のアプリケーションで全オブジェクトを読み出し、その順列アルゴリズムを実行してください。

Pythonの例：

[code]

    import pymongo
    
    from itertools import permutations
    
    dbconn = pymongo.MongoClient("localhost", 27017)
    mycoll = dbconn["my_db"]["my_collection"]
    doc = mycoll.find_one({"_id": 10001})
    #doc["a"] = [1, 3, 5, 7]
    #doc["b"] = [2, 4, 6]
    aa = []
    for ap in permutations(doc["a"], 3):
        for bp in permutations(doc["b"], 2):
            print(ap + bp)
            aa.append(ap + bp)
    
    #(1, 3, 5, 2, 4)
    #(1, 3, 5, 2, 6)
    #(1, 3, 5, 4, 2)
    #.....
    #(7, 5, 3, 4, 6)
    #(7, 5, 3, 6, 2)
    #(7, 5, 3, 6, 4)
    
    print(len(aa))
    #144
    
[/code]


CC BY-SA 3.0
2015-04-28T01:56:56.263
9627
2015-04-28T01:56:56.263
113
9471
answer