मैं की तरह order
दस्तावेज़ में कुछ डेटा है:mongodb sum string क्वेरी कैसे करें?
{ "_id": "...", "orderTotal": { "amount" : "10.99", "unit": "USD"}, "orderTime": "...", ... }
{ "_id": "...", "orderTotal": { "amount" : "9.99", "unit": "USD"}, "orderTime": "...", ... }
{ "_id": "...", "orderTotal": { "amount" : "8.99", "unit": "USD"}, "orderTime": "...", ... }
मैं दिन-ब-सभी आदेशों समूह के orderTotal क्वेरी करना चाहते हैं:
db.getCollection('order').aggregate([
{
'$group' : {
'_id': { day: { $dayOfMonth: "$orderTime"}, month: {$month: "$orderTime"}, year: { $year: "$orderTime" }},
'totalAmount': { $sum: '$itemTotal.amount' },
'count': { $sum: 1 }
}
}
])
लेकिन मिल गया:
{
"_id" : {
"day" : 12,
"month" : 12,
"year" : 2016
},
"totalAmount" : 0,
"count" : 4607.0
}
amount
एक स्ट्रिंग है parseFloat
का उपयोग करें लेकिन NaN मिला।
db.getCollection('order').aggregate([
{
'$group' : {
'_id': { day: { $dayOfMonth: "$orderTime"}, month: {$month: "$orderTime"}, year: { $year: "$orderTime" }},
'totalAmount': { $sum: parseFloat('$itemTotal.amount') },
'count': { $sum: 1 }
}
}
])
{
"_id" : {
"day" : 12,
"month" : 12,
"year" : 2016
},
"totalAmount" : NaN,
"count" : 4607.0
}
मिला मैं अद्यतन नहीं कर सकते order
दस्तावेज़ itemTotal.amount
बदलने के लिए अन्य प्रश्न की तरह फ्लोट करने के लिए कहा:
db.order.find().forEach(function(data) {
db.order.update({
"_id": data._id,
"itemTotal.amount": data.itemTotal.amount
}, {
"$set": {
"itemTotal.amount": parseFloat(data.itemTotal.amount)
}
});
})
मैं यह करने के अनुमति न हो। तो, मैं दिन के योग कैसे प्राप्त कर सकता हूं?
तुम बहुत धन्यवाद बहुत! – heramerom