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

MongoDB क्वेरी: केवल एक विशिष्ट घंटे में रिकॉर्ड्स कैसे खोजें?

MongoDB एग्रीगेशन में $hour ऑपरेटर का उपयोग करके घंटे के आधार पर फ़िल्टर करना

$hour एग्रीगेशन ऑपरेटर एक तिथि से घंटा घटक (0-23) निकालता है। $match के साथ संयोजित करके विशिष्ट घंटों के दौरान होने वाले डॉक्यूमेंट्स को फ़िल्टर करें।

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

> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-01-31 09:45:50")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8a86d78f205348bc62a") }
> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-02-21 01:10:01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8b86d78f205348bc62b") }
> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-04-01 04:10:11")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8e26d78f205348bc62c") }
> db.mongoDbSearchForHoursDemo.insertOne({"CustomerName":"Larry","OrderDatetime":new ISODate("2019-05-11 08:53:01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6e8f26d78f205348bc62d") }

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

> db.mongoDbSearchForHoursDemo.find().pretty();

आउटपुट:

{ "_id" : ObjectId("5cd6e8a86d78f205348bc62a"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-01-31T09:45:50Z") }
{ "_id" : ObjectId("5cd6e8b86d78f205348bc62b"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-02-21T01:10:01Z") }
{ "_id" : ObjectId("5cd6e8e26d78f205348bc62c"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-04-01T04:10:11Z") }
{ "_id" : ObjectId("5cd6e8f26d78f205348bc62d"), "CustomerName" : "Larry", "OrderDatetime" : ISODate("2019-05-11T08:53:01Z") }

घंटे 1 और 8 के लिए रिकॉर्ड्स क्वेरी करना

> db.mongoDbSearchForHoursDemo.aggregate([
  { $project: { SpecificHours: { $hour: "$OrderDatetime" } } },
  { $match: { SpecificHours: { "$in": [8, 1] } } }
]);

आउटपुट:

{ "_id" : ObjectId("5cd6e8b86d78f205348bc62b"), "SpecificHours" : 1 }
{ "_id" : ObjectId("5cd6e8f26d78f205348bc62d"), "SpecificHours" : 8 }

व्याख्या

  • $project के साथ $hour - OrderDatetime से घंटा निकालता है एक नए फील्ड SpecificHours में।
  • $match के साथ $in: [8, 1] - उन डॉक्यूमेंट्स को फ़िल्टर करता है जहां निकाला गया घंटा 8 या 1 है।
  • परिणाम में केवल निकाले गए घंटे के साथ प्रोजेक्टेड फील्ड्स शामिल हैं।

मूल फील्ड्स को बनाए रखने के लिए

db.collection.aggregate([
  { $addFields: { hour: { $hour: "$OrderDatetime" } } },
  { $match: { hour: { $in: [8, 1] } } }
]);

अन्य तिथि घटक ऑपरेटर्स

ऑपरेटररिटर्न्स
$yearवर्ष (उदाहरण के लिए, 2019)
$monthमहीना (1-12)
$dayOfMonthमहीने का दिन (1-31)
$hourघंटा (0-23)
$minuteमिनट (0-59)
$secondसेकंड (0-59)
$dayOfWeekसप्ताह का दिन (1=रविवार, 7=शनिवार)

प्रदर्शन नोट

एग्रीगेशन में $hour (या अन्य तिथि ऑपरेटर्स) का उपयोग करने के लिए पूर्ण संग्रह स्कैन की आवश्यकता होती है जब तक कि आप तिथि फील्ड पर इंडेक्स के साथ $match का उपयोग पहले तिथि सीमा को संकीर्ण करने के लिए नहीं करते।

  1. - MongoDB में विशिष्ट दस्तावेज़ को हटाने के लिए क्वेरी

    MongoDB में remove() मेथड का उपयोग करके विशिष्ट दस्तावेज़ हटाना MongoDB में किसी विशिष्ट दस्तावेज़ को हटाने के लिए remove() मेथड का उपयोग करें जिसमें फिल्टर कंडीशन हो। नोट: आधुनिक MongoDB संस्करणों में deleteOne() और deleteMany() का उपयोग करने की सलाह दी जाती है। उदाहरण: संग्रह और दस्तावेज़ बनाना &

  1. - MongoDB Query - केवल Specific Field Value Update करना

    आइए उदाहरण देखते हैं और documents के साथ collection बनाते हैं: Collection बनाना > db.demo557.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e8f28e954b4472ed3e8e864) } > db.demo557.insertOne({Name:David}); { acknowledged : true, insertedId : ObjectId(5e8f28ee54b4472ed3e

  1. - MongoDB क्वेरी: फील्ड मानों में "@email" जैसे स्ट्रिंग की खोज करें

    MongoDB find() का उपयोग करके ईमेल स्ट्रिंग खोजें। आइए एक कलेक्शन बनाते हैं: > db.demo727.insertOne({UserId:John@email.com}); { acknowledged : true, insertedId : ObjectId(5eab375f43417811278f5898) } > db.demo727.insertOne({UserId:John@yahoo.com}); { acknowledged : true, insertedId : ObjectId(5