Leonardo
Leonardo

Reputation: 11387

How can I Pivot on MongoDB

Given the documents:

{
    "_id" : "8843c0c0-846f-44ae-9b69-a124dd28f4db",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WI9ZF"
    }
}

{
    "_id" : "c3fb80fc-75c0-4259-9d5a-1bc6de1ce7d7",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WJ0DD"
    }
}

{
    "_id" : "2ae496e6-28f9-4baa-b952-2054a505f658",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WI8PP"
    }
}

{
    "_id" : "421ccbed-0824-443f-bf42-3f0049f46c71",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WI9WH"
    }
}

{
    "_id" : "5481b1ef-5f0f-4ba1-8210-d704e9650af4",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WI9ZH"
    }
}

{
    "_id" : "1640a27a-6577-4240-8aaa-4c4b1334fd6d",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WJ0DD"
    }
}

{
    "_id" : "bd95d801-da2d-4556-a223-dcff30b6ab9d",
    "purchaseOrderData" : {}
}

{
    "_id" : "4880f816-41e7-43bc-bed4-e8574aa9c045",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WI9LA"
    }
}

{
    "_id" : "fe651764-aeb4-460e-89fa-474fcec33f19",
    "purchaseOrderData" : {}
}

{
    "_id" : "4d73431c-85dc-479a-8739-b314d6cd9636",
    "purchaseOrderData" : {
        "purchaseOrderId" : "WI9LA"
    }
}

i want a result like:

{
    "purchaseOrderData.purchaseOrderId":["_id1","_id2"]
}

ex:

[{
    "WI9ZF":["8843c0c0-846f-44ae-9b69-a124dd28f4db"]
 },{
    "WI9WH":["421ccbed-0824-443f-bf42-3f0049f46c71","5481b1ef-5f0f-4ba1-8210-d704e9650af4"]
 }]

Upvotes: 0

Views: 1719

Answers (1)

profesor79
profesor79

Reputation: 9473

there was a few question similar to yours befere [1] [2]

using aggregation framework you can achieve a close document shape, but there will be a need to reshape this on app server side.

db.leonardo.aggregate([
{
    $group:{
        "_id":"$purchaseOrderData.purchaseOrderId",
        "data":{$push:"$_id"}
        }
}])

will give this output for given dataset:

{ "_id" : "WI9WH", "data" : [ "421ccbed-0824-443f-bf42-3f0049f46c71" ] }
{ "_id" : "WI9ZF", "data" : [ "8843c0c0-846f-44ae-9b69-a124dd28f4db" ] }
{
        "_id" : "WJ0DD",
        "data" : [
                "c3fb80fc-75c0-4259-9d5a-1bc6de1ce7d7",
                "1640a27a-6577-4240-8aaa-4c4b1334fd6d"
        ]
}
{ "_id" : "WI8PP", "data" : [ "2ae496e6-28f9-4baa-b952-2054a505f658" ] }
{ "_id" : "WI9ZH", "data" : [ "5481b1ef-5f0f-4ba1-8210-d704e9650af4" ] }
{ "_id" : null, "data" : [ "bd95d801-da2d-4556-a223-dcff30b6ab9d" ] }
{ "_id" : "WI9LA", "data" : [ "4880f816-41e7-43bc-bed4-e8574aa9c045" ] }

Upvotes: 1

Related Questions