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

استخراج عدد من المستندات إلى مجموعة أخرى في mongodb

Tamim Fahed

السؤال

لدي عدد كبير من المستندات ضمن مجموعة (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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...