Mongodb: كيفية ربط سلاسل من حقلين
يمكنك استخدام بناء الجملة التالي لتسلسل السلاسل من حقلين إلى حقل جديد في MongoDB:
db.myCollection.aggregate([ { $project : { newfield: { $concat : [ " $field1 ", " - ", " $field2 " ] } } }, { $merge : "myCollection" } ])
يقوم هذا المثال تحديدًا بربط السلاسل “field1″ و”field2” في حقل جديد يسمى “newfield” ويضيف الحقل الجديد إلى المجموعة المسماة myCollection .
يوضح المثال التالي كيفية استخدام هذه الصيغة عمليًا مع فريق التحصيلات مع المستندات التالية:
db.teams.insertOne({team: " Mavs ", conference: " Western ", points: 31}) db.teams.insertOne({team: " Spurs ", conference: " Western ", points: 22}) db.teams.insertOne({team: " Rockets ", conference: " Western ", points: 19}) db.teams.insertOne({team: " Celtics ", conference: " Eastern ", points: 26}) db.teams.insertOne({team: " Cavs ", conference: " Eastern ", points: 33}) db.teams.insertOne({team: " Nets ", conference: " Eastern ", points: 38})
مثال: تسلسل السلاسل في MongoDB
يمكننا استخدام الكود التالي لربط السلاسل من حقل “الفريق” وحقل “المؤتمر” في حقل جديد يسمى “teamConf” وإضافة هذا الحقل إلى مجموعة الفرق :
db.teams.aggregate([ { $project : { teamConf: { $concat : [ " $team ", " - ", " $conference " ] } } }, { $merge : "teams" } ])
وهذا ما تبدو عليه المجموعة المحدثة الآن:
{ _id: ObjectId("62013d8c4cb04b772fd7a90c"), team: 'Mavs', conference: 'Western', points: 31, teamConf: 'Mavs - Western' } { _id: ObjectId("62013d8c4cb04b772fd7a90d"), team: 'Spurs', conference: 'Western', points: 22, teamConf: 'Spurs - Western' } { _id: ObjectId("62013d8c4cb04b772fd7a90e"), team: 'Rockets', conference: 'Western', points: 19, teamConf: 'Rockets - Western' } { _id: ObjectId("62013d8c4cb04b772fd7a90f"), team: 'Celtics', conference: 'Eastern', points: 26, teamConf: 'Celtics - Eastern' } { _id: ObjectId("62013d8c4cb04b772fd7a910"), team: 'Cavs', conference: 'Eastern', points: 33, teamConf: 'Cavs - Eastern' } { _id: ObjectId("62013d8c4cb04b772fd7a911"), team: 'Nets', conference: 'Eastern', points: 38, teamConf: 'Nets - Eastern' }
لاحظ أن كل مستند يحتوي على حقل جديد بعنوان “teamConf” والذي يحتوي على سلسلة حقلي “الفريق” و”المؤتمر”.
في هذا المثال تحديدًا، اخترنا ربط السلسلتين باستخدام واصلة كفاصل.
ومع ذلك، يمكننا اختيار ربط السلسلتين دون أي قيم فاصلة بينهما.
يوضح الكود التالي كيفية القيام بذلك:
db.teams.aggregate([ { $project : { teamConf: { $concat : [ " $team ", " $conference " ] } } }, { $merge : "teams" } ])
إليك الشكل الذي ستبدو عليه المجموعة المحدثة:
{ _id: ObjectId("62013d8c4cb04b772fd7a90c"), team: 'Mavs', conference: 'Western', points: 31, teamConf: 'MavsWestern' } { _id: ObjectId("62013d8c4cb04b772fd7a90d"), team: 'Spurs', conference: 'Western', points: 22, teamConf: 'SpursWestern' } { _id: ObjectId("62013d8c4cb04b772fd7a90e"), team: 'Rockets', conference: 'Western', points: 19, teamConf: 'RocketWestern' } { _id: ObjectId("62013d8c4cb04b772fd7a90f"), team: 'Celtics', conference: 'Eastern', points: 26, teamConf: 'CelticsEastern' } { _id: ObjectId("62013d8c4cb04b772fd7a910"), team: 'Cavs', conference: 'Eastern', points: 33, teamConf: 'CavsEastern' } { _id: ObjectId("62013d8c4cb04b772fd7a911"), team: 'Nets', conference: 'Eastern', points: 38, teamConf: 'NetsEastern' }
لاحظ أن الحقل الجديد بعنوان “teamConf” يحتوي على تسلسل حقلي “الفريق” و”المؤتمر” دون أي قيمة فصل بينهما.
ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة $concat هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في MongoDB:
MongoDB: كيفية التحقق مما إذا كان الحقل يحتوي على سلسلة
MongoDB: كيفية إضافة حقل جديد
MongoDB: كيفية حذف حقل