আপডেট: (5 বছর পরে)
দ্রষ্টব্য: আপনি যদি কাপা আর্কিটেকচার ( ইভেন্ট সোর্সিং + সিকিউআরএস ) ব্যবহার করার সিদ্ধান্ত নেন তবে আপনার আপডেটের তারিখের প্রয়োজন হবে না। যেহেতু আপনার ডেটা অপরিবর্তনীয়, কেবলমাত্র সংযুক্ত ইভেন্ট লগ, আপনার কেবল ইভেন্ট তৈরির তারিখ প্রয়োজন। অনুরূপ ল্যামডা আর্কিটেকচার , নীচের বর্ণনা করেছেন। তারপরে আপনার অ্যাপ্লিকেশনের স্থিতি হল ইভেন্ট লগ (উত্পন্ন ডেটা) এর একটি অভিক্ষেপ। আপনি যদি বিদ্যমান সত্তা সম্পর্কে পরবর্তী কোনও ইভেন্টটি পান তবে আপনি সেই ঘটনার তৈরি তারিখটিকে আপনার সত্তার জন্য আপডেটের তারিখ হিসাবে ব্যবহার করবেন। এটি মাইক্রোসরভিস সিস্টেমে একটি সাধারণভাবে ব্যবহৃত (এবং সাধারণত ভুল বোঝাবুঝি) অনুশীলন।
আপডেট: (4 বছর পরে)
আপনি যদি ObjectId
আপনার _id
ক্ষেত্র হিসাবে ব্যবহার করেন (যা সাধারণত হয়) তবে আপনার যা করতে হবে তা হ'ল:
let document = {
updatedAt: new Date(),
}
_id
ক্ষেত্র থেকে তৈরি টাইমস্ট্যাম্প কীভাবে পাবেন তার নীচে আমার মূল উত্তরটি দেখুন । আপনার যদি বাহ্যিক সিস্টেম থেকে আইডি ব্যবহার করতে হয়, তবে রোমান আরএন নেস্টারভের উত্তরটি দেখুন।
আপডেট: (2.5 বছর পরে)
আপনি এখন মংগুজে সংস্করণ> = 4.0 সহ # টাইমস্ট্যাম্পস বিকল্পটি ব্যবহার করতে পারেন ।
let ItemSchema = new Schema({
name: { type: String, required: true, trim: true }
},
{
timestamps: true
});
যদি আপনার স্কিমাতে টাইমস্ট্যাম্পস, মঙ্গুজ বরাদ্দ করে createdAt
এবং updatedAt
ক্ষেত্রগুলি সেট করে থাকে তবে নির্ধারিত ধরণটি Date
।
আপনি টাইমস্ট্যাম্প ফাইল করা নামগুলিও নির্দিষ্ট করতে পারেন:
timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
দ্রষ্টব্য: আপনি যদি সমালোচনামূলক ডেটা সহ কোনও বড় অ্যাপ্লিকেশনটিতে কাজ করছেন তবে আপনার ডকুমেন্টগুলি আপডেট করার বিষয়ে আপনার পুনর্বিবেচনা করা উচিত। আমি আপনাকে অপরিবর্তনীয়, পরিশিষ্ট-কেবলমাত্র ডেটা ( ল্যাম্বদা আর্কিটেকচার ) দিয়ে কাজ করার পরামর্শ দেব । এর অর্থ হ'ল আপনি কেবলমাত্র প্রবেশের অনুমতি দিন। আপডেট এবং মুছে ফেলার অনুমতি দেওয়া উচিত নয়!আপনি যদি কোনও রেকর্ড "মুছতে" চান, আপনি সহজেই কিছু timestamp
/ version
দায়ের করা নথির একটি নতুন সংস্করণ inোকাতে এবং তারপরে একটি deleted
ক্ষেত্র সেট করতে পারেন true
। একইভাবে আপনি যদি কোনও দস্তাবেজ আপডেট করতে চান - আপনি উপযুক্ত ক্ষেত্রগুলি আপডেট করে একটি নতুন তৈরি করেন এবং বাকী ক্ষেত্রগুলি অনুলিপি করে থাকেন this তখন এই নথিটি জিজ্ঞাসা করার জন্য আপনি একটি নতুন টাইমস্ট্যাম্প বা সর্বোচ্চ সংস্করণ সহ একটি পাবেন "মুছে ফেলা" (নাdeleted
ক্ষেত্রটি অপরিজ্ঞাত বা মিথ্যা `)।
ডেটা অপরিবর্তনীয়তা নিশ্চিত করে যে আপনার ডেটা ডিবাগযোগ্য - আপনি প্রতিটি নথির ইতিহাস সন্ধান করতে পারেন। কিছু ভুল হয়ে গেলে আপনি কোনও নথির পূর্ববর্তী সংস্করণেও রোলব্যাক করতে পারেন। আপনি যদি এই জাতীয় কোনও স্থাপত্যের সাথে যান তবে ObjectId.getTimestamp()
আপনার যা প্রয়োজন তা হ'ল এবং এটি মঙ্গুজ নির্ভর নয়।
মূল উত্তর:
আপনি যদি নিজের পরিচয় ক্ষেত্র হিসাবে অবজেক্টআইড ব্যবহার করছেন তবে আপনার ক্ষেত্রের দরকার নেই created_at
। অবজেক্টআইডসের একটি পদ্ধতি বলা হয় getTimestamp()
।
অবজেক্ট-( "507c7f79bcf86cd7994f6c0e")। GetTimestamp ()
এটি নিম্নলিখিত আউটপুট ফেরত দেবে:
ISODate ( "2012-10-15T21: 26: 17Z")
এখানে আরও তথ্য আমি একটি মঙ্গো অবজেক্টআইডি থেকে তৈরি তারিখটি কীভাবে বের করব
updated_at
দায়ের করা যুক্ত করতে আপনাকে এটি ব্যবহার করতে হবে:
var ArticleSchema = new Schema({
updated_at: { type: Date }
// rest of the fields go here
});
ArticleSchema.pre('save', function(next) {
this.updated_at = Date.now();
next();
});