如何在我的查询结果中使用 mongoDB collection 的键作为具有某个值的键?

How to use the key of mongoDB collection as a key with some value in my query result?

假设这是我的 collection :

{
   {
      "productType":"bike",
      "productID":1,
      "lat":22.7,
      "long":77.4
   },
   {
      "productType":"car",
      "productID":5,
      "lat":25.7,
      "long":75.4
   },
   {
      "productType":"bike",
      "productID":2,
      "lat":26.7,
      "long":76.4
   }
}

我想使用产品类型作为我的 mongo 查询和分组的关键,以获得如下结果:

{
   "bike":{
      "1":{
         "latitude":"22.7",
         "longitude":"77.4"
      },
      "2":{
         "latitude":"26.7",
         "longitude":"76.4"
      }
   },
   "car":{
      "5":{
         "latitude":"25.7",
         "longitude":"75.4"
      }
   }
}

我尝试使用 $replaceRoot 但无法获得所需的结果。

试试这个查询:

db.products.aggregate([
    {
        $group: {
            _id: "$productType",
            products: {
                $push: {
                    "k": { $toString: "$productID" },
                    "v": {
                        latitude: "$lat",
                        longitude: "$long"
                    }
                }
            }
        }
    },
    {
        $replaceWith: {
            array: [
                {
                    k: "$_id",
                    v: { $arrayToObject: "$products" }
                }
            ]
        }
    },
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: "$array" }
        }
    }
]);

输出:

/* 1 */
{
    "bike" : {
        "1" : {
            "latitude" : 22.7,
            "longitude" : 77.4
        },
        "2" : {
            "latitude" : 26.7,
            "longitude" : 76.4
        }
    }
},

/* 2 */
{
    "car" : {
        "5" : {
            "latitude" : 25.7,
            "longitude" : 75.4
        }
    }
}