Database 具有自定义输出的条件聚合

Database 具有自定义输出的条件聚合,database,mongodb,Database,Mongodb,我在MongoDB中有一些数据如下: {file:'file1', ms: 'ms1', rs: 56, ec: 73, no:41, cp: 90} {file:'file1', ms: 'ms1', rs: 67, ec: 42, no:34, cp: 81} {file:'file1', ms: 'ms2', rs: 23, ec: 43, no:56, cp: 20} {file:'file1', ms: 'ms2', rs: 98, ec: 65, no:54, cp: 16} {fi

我在MongoDB中有一些数据如下:

{file:'file1', ms: 'ms1', rs: 56, ec: 73, no:41, cp: 90}
{file:'file1', ms: 'ms1', rs: 67, ec: 42, no:34, cp: 81}
{file:'file1', ms: 'ms2', rs: 23, ec: 43, no:56, cp: 20}
{file:'file1', ms: 'ms2', rs: 98, ec: 65, no:54, cp: 16}
{file:'file1', ms: 'ms3', rs: 12, ec: 31, no:89, cp: 28}
{file:'file1', ms: 'ms3', rs: 23, ec: 77, no:76, cp: 23}
{file:'file2', ms: 'ms1', rs: 43, ec: 59, no:12, cp: 54}
{file:'file2', ms: 'ms1', rs: 45, ec: 09, no:76, cp: 67}
{file:'file2', ms: 'ms2', rs: 65, ec: 45, no:34, cp: 43}
{file:'file2', ms: 'ms2', rs: 67, ec: 51, no:65, cp: 87}
{file:'file2', ms: 'ms3', rs: 78, ec: 11, no:22, cp: 55}
{file:'file2', ms: 'ms3', rs: 11, ec: 23, no:55, cp: 67}
我怎样才能得到这些数据

"rs" when file="file1", ms="ms1" 

"ec" when file="file1", ms="ms2" 

"cp" when file="file2", ms="ms3" 
格式如下:

{
    file1ms1rs: [
        {file:'file1', ms: 'ms1', rs: 56}
        {file:'file1', ms: 'ms1', rs: 67}
    ],
    file1ms2ec: [
        {file:'file1', ms: 'ms2', ec: 43}
        {file:'file1', ms: 'ms2', ec: 65}
    ],
    file2ms3cp: [
        {file:'file2', ms: 'ms3', cp: 55}
        {file:'file2', ms: 'ms3', cp: 67}
    ]
}
您可以分别使用和定义
$match
/
$project
阶段:

db.collection.aggregate([
    {
        $facet: {
            file1ms1rs: [{ $match: { file: "file1", ms: "ms1" } }, { $project: { _id: 0, file: 1, ms: 1, rs:1 } }],
            file1ms2ec: [{ $match: { file: "file1", ms: "ms2" } }, { $project: { _id: 0, file: 1, ms: 1, ec:1 } }],
            file2ms3cp: [{ $match: { file: "file1", ms: "ms3" } }, { $project: { _id: 0, file: 1, ms: 1, cp:1 } }],
        }
    }
])

您可以分别使用和定义
$match
/
$project
阶段:

db.collection.aggregate([
    {
        $facet: {
            file1ms1rs: [{ $match: { file: "file1", ms: "ms1" } }, { $project: { _id: 0, file: 1, ms: 1, rs:1 } }],
            file1ms2ec: [{ $match: { file: "file1", ms: "ms2" } }, { $project: { _id: 0, file: 1, ms: 1, ec:1 } }],
            file2ms3cp: [{ $match: { file: "file1", ms: "ms3" } }, { $project: { _id: 0, file: 1, ms: 1, cp:1 } }],
        }
    }
])

@Amirodaee您在
文件
/
ms
上有索引吗?@Amirodaee您在
文件
/
ms
上有索引吗?