これが私のドキュメント構造です:
{
"_id" : ObjectId("50dcd7ff4de274a2c4a31df0"),
"seq_name" : "169:D18M6ACXX:1:1111:17898:82486:GTGACA_10",
"raw_seq" : "TTGACCTGAGGAGACGGTGACCAGGGTTCCCTGGCCCCAGTAGTCAACGGGAGTTAGACTTCTCGCACAGTAATAAACAGCCGTGTCCTCGGCTCTCAGGCTGTTCATTTGCAGA",
"seq_aa" : "LQMNSLRAEDTAVYYCARSLTPVDYWGQGTLVTVSSGQ",
"cdr3_seq" : "GCGAGAAGTCTAACTCCCGTTGACTAC",
"cdr3_seq_aa" : "ARSLTPVDY",
"cdr3_seq_len" : 27,
"cdr3_seq_aa_len" : 9,
"vg" : "IGHV3-48*03",
"dg" : "IGHD3-10*02R",
"jg" : "IGHJ4*02",
"donor" : 10
}
私は MongoDB フレームワークを本当に楽しんでいますが、このグループ化パイプラインに問題があり、まだ別のコレクションに $out できないためです。このマルチグループ パイプラインを実行できます。
db.collection.aggregate({$match:{cdr3_seq_aa_len:{$gt:3}},
{$group:{_id:$cdr3_seq_aa,other_set:{$addToSet:$cdr3_seq_aa_len}}},
{$group:{_id:$other_set,sum:{$sum:1}}})
これにより、長さでグループ化された一意の $cdr3_seq_aa の数がわかります。
{ id:40, sum:1002031,
id:41, sum:1949402,....
しかし、私がやりたい最初の操作は、ドナーごとのグループ化です。したがって、最初に、各ドナー間で一意の cdr3_seq_aa 文字列がいくつあるかを知ることができます。次に、長さでグループ化し、その長さでグループ化された文字列の数を数えたいと思います。