MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

समय श्रृंखला और एकत्रीकरण ढांचा (मोंगो)

आपकी त्रुटि यह है कि आप _id . की गणना कैसे कर रहे हैं $group . के लिए ऑपरेटर, विशेष रूप से इसका second भाग:

second: { $subtract: [
    { $second: "$time" },
    { $mod: [
        { $second: "$time" },
        timeBlock / 1000
    ]}
]}

इसलिए, अपने सभी डेटा को 10 timeBlock . में विभाजित करने के बजाय new Date(end - 10 * timeBlock) . से शुरू होने वाले मिलीसेकंड लंबे खंड , आप इसे timeBlock के निकटतम भाजक से प्रारंभ करते हुए 11 भागों में विभाजित कर रहे हैं ।

इसे ठीक करने के लिए आपको पहले delta = end - $time . की गणना करनी चाहिए और फिर मूल $time . के बजाय इसका उपयोग करें अपना _id बनाने के लिए ।

मेरे कहने का एक उदाहरण यहां दिया गया है:

Document.aggregate({
    $match: {
        time: {
            $gte: new Date(end - 10 * timeBlock),
            $lt: new Date(end)
        }
    }
}, {
    $project: {
        time: 1,
        delta: { $subtract: [
            new Date(end),
            "$time"
        ]}
    }
}, {
    $project: {
        time: 1,
        delta: { $subtract: [
            "$delta",
            { $mod: [
                "$delta",
                timeBlock
            ]}
        ]}
    }
}, {
    $group: {
        _id: { $subtract: [
            new Date(end),
            "$delta"
        ]},
        count: { $sum: 1 }
    }
}, {
    $project: {
        time: "$_id",
        count: 1,
        _id: 0
    }
}, {
    $sort: {
        time: 1
    }
}, function(err, result) {
    // ...
})

मैं आपको कच्चे समय के मूल्यों (मिलीसेकंड में) का उपयोग करने की भी सलाह देता हूं, क्योंकि यह बहुत आसान है और क्योंकि यह आपको गलती करने से रोकेगा। आप timeकास्ट कर सकते हैं timeParts . में $group . के बाद $project . का उपयोग करके ऑपरेटर।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB 'गिनती ()' बहुत धीमी है। हम इसके साथ कैसे परिशोधित/काम करते हैं?

  2. रूबी/रेल:मोंगो (मणि) के साथ मोंगोइड; एक बीएसओएन संघर्ष? विभिन्न संस्करणों को कैसे संभालें?

  3. upsert का उपयोग करके जावा के साथ mongodb में com.mongodb.MongoException$DuplicateKey प्राप्त करना

  4. स्प्रिंग डेटा मोंगो Enum के लिए PersistentEntity नहीं ढूँढ सकता:

  5. MongoDB C# ड्राइवर के साथ इंटरफ़ेस के रूप में ऑब्जेक्ट को डिसेरिएलाइज़ करें