اذهب إلى المحتوى

السؤال

نشر

لدي عدد كبير من المستندات ضمن مجموعة (users) بهذا الشكل:

{
	date: '2020-12-12',
	username: 'test1',
	email: 'test@test.com'
}
....

كيف يمكنني إخراج مجموعة من هؤلاء المستخدمين (السجلات) إلى collection أخرى ضمن نفس قاعدة البيانات؟

Recommended Posts

  • 1
نشر

يمكن إجراء ذلك من خلال الكود البرمجي عن طريق تنفيذ عمليات الإدخال إلى المجموعة الجديدة ضمن حلقة تكرارية، ويمكنك وضع الشرط المناسب ضمن الاستعلام في هذه الحلقة، مثال مبسّط:

find({date:"2020-12-12"}).forEach(function(doc){
   db.newColl.insert(doc);
});

بحيث يتم إضافة هذه المستندات المحققة للشرط على المجموعة الجديدة newColl.

ومن خلال الإصدارات الجديدة ل mongodb أصبح بإمكانك تنفيذ ذلك ضمن shell نفسها من خلال استخدام خاصية التجميع aggregation والمعامل out بالشكل التالي:

db.originalCol.aggregate([ { $match: { date: "2020-12-12" } }, { $out: "newCollection" } ])

 

  • 1
نشر

يمكنك استخدام insert و toArray لتنفيذ المطلوب كالتالي

db.subset.insert(db.full_set.find({date:"20120105"}).toArray())

ولكن إذا كان لديك عدد كبير من المستندات يفضل استخدام ال aggregation كما في التعليق السابق حيث تعتبر أسرu من الحل المعتمد على find و insert بشكل كبير

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...