Группировать по с условиями в mongoDB - PullRequest
0 голосов
/ 28 мая 2020

Компания, с которой я сейчас работаю, использует как mongoDB, так и SQL. Хотя информация в реальном времени хранится в MongoDB. Я знаю основную c SQL для написания операторов выбора для целей отчетности и мониторинга, но не знаю о MongoDB.

У меня есть следующий запрос SQL -

select outletid, date(orderDate - interval weekday(orderdate) day) as WeekStart, status, count(status) from ordersummary where orderDate BETWEEN (CURDATE() - INTERVAL 28 DAY) AND (CURDATE()- interval 1 day) group by 1,2,3

Здесь "WeekStart" дает дату понедельника недели "orderdate", а условие Where - это данные за последние 28 дней. Он группирует результат по идентификатору розетки, началу недели и статусу и дает мне количество статусов для этого идентификатора точки за эту неделю для этого статуса. Результат выглядит следующим образом:

введите здесь описание изображения

Теперь мне нужен точно такой же результат, но от mongoDB, я не знаю, как это сделать. ниже приведен образец записи из mongoDB, откуда я хочу его получить -

{
"_id" : ObjectId("5d57ad3a0fc7036b20565036"),
"outletLocation" : {
    "lng" : 78.365997,
    "lat" : 17.459716
},
"orderNum" : "1",
"locality" : "",
"creationDate" : ISODate("2019-08-17T13:01:06.510+05:30"),
"rated" : false,
"outletId" : "5b492150-b9d6-11e9-85ec-077ec74e3435",
"outletName" : "Kolkatta Rolls",
"prepTime" : "15",
"scheme" : "regular",
"deliveryInfo" : {
    "transactionId" : "",
    "distance" : 6.2,
    "eta" : {
        "pickup" : 0,
        "dropoff" : 0
    },
    "state" : "delivered",
    "categoryId" : "pickup_drop",
    "estimatedPrice" : 155,
    "provider" : null
},
"items" : [ 
    {
        "itemId" : "e920d130-b9d7-11e9-9541-4d5f38dd61c1",
        "name" : "Veg Pakodas",
        "quantity" : 2,
        "isVeg" : true,
        "gst" : 5,
        "price" : 75,
        "addons" : []
    }
],
"offer" : {
    "value" : 37.5,
    "promoId" : "cb8f5130-c0bd-11e9-b2b6-791f2050dad4"
},
"billing" : {
    "laalsaCharge" : 2,
    "subTotal" : 112.5,
    "charges" : [ 
        {
            "name" : "deliveryCharge",
            "value" : "10.0"
        }, 
        {
            "name" : "packingCharges",
            "value" : "0.0"
        }, 
        {
            "name" : "surgeCharges",
            "value" : "0.0"
        }
    ],
    "discount" : 37.5,
    "roundOff" : 0,
    "taxes" : [ 
        {
            "name" : "cgst",
            "value" : "2.81"
        }, 
        {
            "name" : "sgst",
            "value" : "2.81"
        }
    ],
    "totalAmount" : 128.12
},
"orderId" : "f9861a80-c0c0-11e9-9ff2-3ddfa5807478",
"specialInstructions" : "",
"status" : [ 
    {
        "date" : ISODate("2019-08-17T13:01:06.510+05:30"),
        "source" : "suggestions",
        "value" : "inPayment"
    }, 
    {
        "date" : ISODate("2019-08-17T18:27:18.528+05:30"),
        "value" : "complete",
        "source" : "delivery"
    }
],
"userId" : "c5a92930-beb0-11e9-b268-47fcdfd8fd18",
"__v" : 0

}

Здесь много полей, которые мне не нужны, просто вставьте все сюда .. Пожалуйста help?

Если бы я мог получить для этого команду / запрос mon go, я мог бы использовать ее, чтобы самому выяснить многие другие похожие ...

Спасибо!

...