我必须在类别的基础上求和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