我必須在類別的基礎上求和subOrderAmt。下面是示例。
{
"_id" : ObjectId("589b2214a8c4d36ab9f3a7ec"),
"_class" : "com.homeshop18.clickstream.mongo.domain.widget.Order",
"orderId" : NumberLong(946588817),
"subOrders" : [
{
"subOrderId" : NumberLong("41357348772"),
"productId" : NumberLong(32164935),
"subOrderAmt" : "220.00",
"category" : NumberLong(3043),
"isCancelled" : false
},
{
"subOrderId" : NumberLong("41357348773"),
"productId" : NumberLong(33173277),
"subOrderAmt" : "200.00",
"category" : NumberLong(3043),
"isCancelled" : false
},
{
"subOrderId" : NumberLong("41357348774"),
"productId" : NumberLong(32852897),
"subOrderAmt" : "201.00",
"category" : NumberLong(3042),
"isCancelled" : false
}
],
"bannerUserId" : "abdb1ec23721832dafa3e5535ff5295c75ad6f8cd2c1c91093b9ad7ff65de8ff"
}
SQLDB查詢: - SELECT SUM(subOrderAmt
)作爲totalAmt,category
FROM(order.subOrders
) GROUP BY`類別
MongoDB的查詢
db.order.aggregate([ {$ unwind:「$ subOrders」},{$ group:{_id:{category:「$ subOrders.category」},totalAmt:{$ sum:「$ subOrders.subOrderAmt」},count:{$ sum:1} }}]) {「_id」:{「category」: NumberLong(3042)},「totalAmt」:0,「count」:1} {「_id」:{「category」:NumberLong(3043)},「totalAmt」:0,「count」:8}
無法獲得subOrderAmt的總和。請幫助。
你沒有得到預期結果的原因是因爲'subOrderAmt'被聲明爲String。使用數字數據類型。 – Shailendra
如果您使用數字數據類型,您將得到以下結果 - {「_id」:3042,「summation」:201} {「_id」:3043,「summation」:420} – Shailendra
您的查詢將是db.order.aggregate ([{$ unwind:'$ subOrders'},{$ group:{_ id:「$ subOrders.category」,「summation」:{$ sum:「$ subOrders.subOrderAmt」}}}]) – Shailendra