Mongodb 根据值对mongo集合进行分组如果存在,则不分组,按原样显示

Mongodb 根据值对mongo集合进行分组如果存在,则不分组,按原样显示,mongodb,grouping,Mongodb,Grouping,我想按“Company”属性对以下集合进行分组,仅当Company属性可用时,否则不按原样分组显示 这是我的收藏 { "_id":"Wagon R", "type": "Car", "Company": "Suzuki" }, { "_id":"Ertiga", "type": "Car", "Company": "Suzuki" }, { "_id":"Accent", "type": "Car", "Company":

我想按“Company”属性对以下集合进行分组,仅当Company属性可用时,否则不按原样分组显示

这是我的收藏

{
    "_id":"Wagon R",
    "type": "Car",
    "Company": "Suzuki"
},
{
    "_id":"Ertiga",
    "type": "Car",
    "Company": "Suzuki"
},
{
    "_id":"Accent",
    "type": "Car",
    "Company": "Hyundai"
},
{
    "_id":"Camry",
    "type": "Car",
    "Company": "Toyoto"
},
{
    "_id":"Corollo",
    "type": "Car",
    "Company": "Toyoto"
},
{
    "_id":"M 800",
    "type": "Car",
    "Company": ""
},
{
    "_id":"E 800",
    "type": "Car",
},
{
    "_id":"X 800",
    "type": "Car",
}
所需的样本输出

{
    "_id":"Wagon R",
},
{
    "_id":"Accent",
},
{
    "_id":"Camry",
},
{
    "_id":"M 800",
},
{
    "_id":"E 800",
},
{
    "_id":"X 800",
}
我尝试过分组,但它给出的集合只有company属性。我还想要没有公司属性的记录 有人能帮忙吗

    {
        "$match" : ----
    },

    {
      "$group": {
        "_id": "$Company",
        "doc": {"$first":"$$ROOT"}


      }
    },
    {
        "$replaceRoot": {"newRoot":"$doc"}
    }

我在这个查询的帮助下成功了:

db.getCollection('test999').aggregate([
    {
        $addFields: {
            groupCompany: 
            { 
                $switch: {
                    branches: [
                        { case : { $lt : ["$Company", null]}, then : "$_id"},
                        { case : { $ne : ["$Company", ""]}, then: "$Company"},
                        { case : { $eq : ["$Company",""]}, then : "$_id"} 
                    ]
                    ,default: "default"
                }
            }
        }
    },
    {
        "$group": {
            "_id": "$groupCompany",
            "doc": { "$first": "$$ROOT" }
        }
    },
    {
        "$replaceRoot": { "newRoot": "$doc" }
    }
]);

首先,每辆车都有一个公司。请使用公司名称保存车辆数据。公司名称可以是present、empty或null。