Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में विशिष्ट तिथियों के बीच लॉग इन करने वाले उपयोगकर्ताओं की संख्या कैसे खोजें?

MongoDB में तिथि सीमा द्वारा उपयोगकर्ता लॉगिन गिनना

$gte (ग्रेटर दैन इक्वल) और $lt` (कम दैन) ऑपरेटर्स के साथ count() का उपयोग करके एक विशिष्ट तिथि सीमा के भीतर आने वाले डॉक्यूमेंट्स को गिनें।

नमूना डेटा बनाना

> db.findDataByDateDemo.insertOne({"UserName":"John","UserLoginDate":new ISODate("2019-01-31")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8cd7bf3115999ed511ed") }
> db.findDataByDateDemo.insertOne({"UserName":"Larry","UserLoginDate":new ISODate("2019-02-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8ce7bf3115999ed511ee") }
> db.findDataByDateDemo.insertOne({"UserName":"Sam","UserLoginDate":new ISODate("2019-05-02")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8cf3bf3115999ed511ef") }
> db.findDataByDateDemo.insertOne({"UserName":"David","UserLoginDate":new ISODate("2019-05-16")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8d00bf3115999ed511f0") }
> db.findDataByDateDemo.insertOne({"UserName":"Carol","UserLoginDate":new ISODate("2019-10-19")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd8d0ebf3115999ed511f1") }

सभी डॉक्यूमेंट्स देखना

> db.findDataByDateDemo.find();

आउटपुट:

{ "_id" : ObjectId("5cdd8cd7bf3115999ed511ed"), "UserName" : "John", "UserLoginDate" : ISODate("2019-01-31T00:00:00Z") }
{ "_id" : ObjectId("5cdd8ce7bf3115999ed511ee"), "UserName" : "Larry", "UserLoginDate" : ISODate("2019-02-01T00:00:00Z") }
{ "_id" : ObjectId("5cdd8cf3bf3115999ed511ef"), "UserName" : "Sam", "UserLoginDate" : ISODate("2019-05-02T00:00:00Z") }
{ "_id" : ObjectId("5cdd8d00bf3115999ed511f0"), "UserName" : "David", "UserLoginDate" : ISODate("2019-05-16T00:00:00Z") }
{ "_id" : ObjectId("5cdd8d0ebf3115999ed511f1"), "UserName" : "Carol", "UserLoginDate" : ISODate("2019-10-19T00:00:00Z") }

तिथि सीमा में लॉगिन गिनना (2 मई से 18 मई 2019)

> db.findDataByDateDemo.count({
  "UserLoginDate": {
    "$gte": new Date("2019-05-02"),
    "$lt": new Date("2019-05-18")
  }
});

आउटपुट:

2

व्याख्या

  • $gte: new Date("2019-05-02") - 2 मई 2019 00:00:00 UTC पर या उसके बाद।
  • $lt: new Date("2019-05-18") - 18 मई 2019 00:00:00 UTC से सख्ती से पहले (यानी, 17 मई तक)।
  • मिलान: Sam (2 मई) और David (16 मई) = 2 उपयोगकर्ता।

सर्वोत्तम अभ्यास

  • समावेशी प्रारंभ, अनन्य अंत पैटर्न ($gte + $lt) का उपयोग करें ताकि सीमाओं पर डबल-काउंटिंग से बचा जा सके।
  • UserLoginDate पर इंडेक्स बनाएं ताकि बड़े कलेक्शन पर तिथि सीमा क्वेरी तेज हो।
  • MongoDB 4.0.3+ में count() के बजाय countDocuments() का उपयोग करें (अप्रचलित)।
  • एग्रीगेशन के लिए, $match + $count स्टेज का उपयोग करें।

एग्रीगेशन विकल्प

db.findDataByDateDemo.aggregate([
  { $match: { UserLoginDate: { $gte: new Date("2019-05-02"), $lt: new Date("2019-05-18") } } },
  { $count: "loginCount" }
]);
  1. - MongoDB में किसी फ़ील्ड के सभी मानों को विशिष्ट स्ट्रिंग से अपडेट करना

    कलेक्शन के सभी दस्तावेज़ों में किसी फ़ील्ड का मान बदलने के लिए update() के साथ multi: true (या नए वर्जन में updateMany()) का उपयोग करें। डेमो डेटा > db.demo720.insertOne({SubjectName:MySQL}); > db.demo720.insertOne({SubjectName:Java}); > db.demo720.insertOne({SubjectName:C}); > db.demo7

  1. - MongoDB में विशिष्ट मान से कम कीमत वाले रिकॉर्ड ढूंढें

    विशिष्ट मान से कम कीमत वाले रिकॉर्ड जांचने के लिए $lt का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo728.insertOne({Price:75}); { acknowledged : true, insertedId : ObjectId(5eab413c43417811278f589b) } > db.demo728.insertOne({Price:59}); { acknowledged : true, insertedId : ObjectId(5eab4140

  1. - MySQL में TIMESTAMPDIFF से दो दिनांकों के बीच महीनों का अंतर निकालें

    MySQL का TIMESTAMPDIFF() फ़ंक्शन दो दिनांक/समय मानों के बीच निर्दिष्ट इकाई में अंतर की गणना करता है। सिंटैक्स TIMESTAMPDIFF(इकाई, दिनांक1, दिनांक2) इकाइयां: MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR उदाहरण: महीनों में अंतर 1. टेबल बनाएं ); 2. डेटा डालें INSERT INTO De