আপনি যদি গত 5 মিনিটে সমস্ত নতুন জিনিস পেতে চান তবে আপনাকে কিছু গণনা করতে হবে, তবে এটি শক্ত নয় ...
প্রথমে আপনি যে সম্পত্তির সাথে মিল রাখতে চান তার উপর একটি সূচক তৈরি করুন (উত্থানের জন্য সাজানোর দিকনির্দেশ -1 এবং আরোহণের জন্য 1 অন্তর্ভুক্ত করুন)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
তারপরে শেষ 5 মিনিটে (60 সেকেন্ড * 5 মিনিট) তৈরি করা নথির জন্য ক্যোয়ারী .... কারণ জাভাস্ক্রিপ্টের .getTime()
রিটার্ন মিলি সেকেন্ডে আপনাকে new Date()
কনস্ট্রাক্টরের ইনপুট হিসাবে ব্যবহারের আগে আপনাকে 1000 দ্বারা বহুগুণে চালিত করতে হবে ।
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
এর জন্য ব্যাখ্যা new Date(new Date().getTime()-60*5*1000).toISOString()
নিম্নরূপ:
প্রথমে আমরা "5 মিনিট আগে" গণনা করি:
new Date().getTime()
আমাদেরকে মিলি সেকেন্ডে বর্তমান সময় দেয়
- আমরা এটি থেকে 5 মিনিট (এমএসে) বিয়োগ করতে চাই:
5*60*1000
- আমি 60
সেকেন্ডে কেবল গুণ করি যাতে এটি সহজেই পরিবর্তন হয়। আমি যদি 2 ঘন্টা (120 মিনিট) চাই তবে আমি কেবলমাত্র এতে পরিবর্তন 5
করতে 120
পারি।
new Date().getTime()-60*5*1000
আমাদের দেয় 1484383878676
(5 মিনিট আগে এমএসে)
new Date()
মংগোডিবি টাইমস্ট্যাম্পগুলির জন্য প্রয়োজনীয় ISO স্ট্রিং ফর্ম্যাটটি পেতে এখন আমাদের এটি একটি কনস্ট্রাক্টরে খাওয়াতে হবে।
{ $gte: new Date(resultFromAbove).toISOString() }
(মংডোব। ফাইন্ড () ক্যোয়ারী)
- যেহেতু আমাদের চলক থাকতে পারে না আমরা এটি সমস্ত শটগুলিতেই করি:
new Date(new Date().getTime()-60*5*1000)
- ... তারপরে আইএসও স্ট্রিংয়ে রূপান্তর করুন:
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString()
আমাদের দেয় 2017-01-14T08:53:17.586Z
আপনি যদি নোড-মংডোব-নেটিভ ড্রাইভারটি ব্যবহার করেন তবে অবশ্যই এটি ভেরিয়েবলগুলির সাথে কিছুটা সহজ but