这是我的文档结构:
{
"_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 字符串。然后我想按长度对其进行分组,并计算有多少个字符串与长度分组。