Latest web development tutorials

عمليات الذرية MongoDB

mongodb لا يعتمد المعاملات، لذلك، في تطبيق المشروع الخاص بك، والانتباه إلى هذه النقطة. أيا كان التصميم، ونحن لا نطلب mongodb ضمان سلامة البيانات.

لكن mongodb يوفر العديد من العمليات الذرية، مثل حفظ مستند أو تعديل أو حذف، الخ، هي عمليات الذرية.

إما هذا هو ما يسمى عملية الذرية لحفظ المستند إلى Mongodb، أو لم يتم حفظها إلى Mongodb، لا يملك وثيقة الاستعلام سليمة لن يحدث.


نموذج بيانات الذري

النظر في المثال التالي، وكتب المكتبة والمعلومات المعاملة.

في مثال واحد يوضح كيفية ضمان أن الحقول ثيقة جزءا لا يتجزأ من نفس العمليات الذرية ذات الصلة (تحديث: التحديث) الحقول متزامنة.

book = {
          _id: 123456789,
          title: "MongoDB: The Definitive Guide",
          author: [ "Kristina Chodorow", "Mike Dirolf" ],
          published_date: ISODate("2010-09-24"),
          pages: 216,
          language: "English",
          publisher_id: "oreilly",
          available: 3,
          checkout: [ { by: "joe", date: ISODate("2012-10-15") } ]
        }

يمكنك استخدام طريقة db.collection.findAndModify () لتحديد ما إذا كانت الكتب يمكن تحديثها مع مستوطنة جديدة ومعلومات الفواتير.

جزءا لا يتجزأ في نفس المجالات وثيقة المتاحة والخروج للتأكد من أن هذه المجالات تتم مزامنة تحديث:

db.books.findAndModify ( {
   query: {
            _id: 123456789,
            available: { $gt: 0 }
          },
   update: {
             $inc: { available: -1 },
             $push: { checkout: { by: "abc", date: new Date() } }
           }
} )

تستخدم عمليات الذرية عادة أوامر

$ مجموعة

فهو يستخدم لتحديد مفتاح وتحديث مفتاح، إذا لم المفتاح غير موجود، وخلق.

{ $set : { field : value } }

$ إلغاء تعيين

لإزالة مفتاح.

{ $unset : { field : 1} }

$ المؤتمر الوطني العراقي

$ شركة يمكن أن تكون قيمة رقمية من الوثيقة (فقط لتلبية متطلبات رقمي) مفاتيح لزيادة أو نقصان العمليات.

{ $inc : { field : value } }

$ دفع

الاستعمال:

{ $push : { field : value } }

وأضاف نوع مجموعة جديدة من القيمة المضافة إلى الميدان للذهاب في الداخل، لا بد أن يكون وظيفة حقل نوع مجموعة، حالة عدم وجود هذا المجال.

$ PushAll

مع $ دفع، ولكن مرة واحدة يمكنك إلحاق قيم متعددة في حقل صفيف.

{ $pushAll : { field : value_array } }

$ سحب

لحذف حقل من مجموعة من قيمة متساوية القيمة.

{ $pull : { field : _value } }

$ AddToSet

إضافة قيمة إلى مجموعة، وفقط عندما تكون القيمة ليست ضمن مجموعة في الزيادة.

$ البوب

أول أو آخر عنصر من مجموعة من حذف

{ $pop : { field : 1 } }

$ إعادة تسمية

تعديل اسم الحقل

{ $rename : { old_field_name : new_field_name } }

$ بت

عمليات الشيء، ونوع عدد صحيح

{$bit : { field : {and : 5}}}

مشغل التحول

> t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }
 
> t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1}}, false, true )
 
> t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 4 }, { "by" : "jane", "votes" : 7 } ] }