رفتن به نوشته‌ها

دسته: MongoDB (مونگو دی‌بی)

عملیات UPDATE به صورت جمعی در آرایه‌ها

در این جلسه می خواهیم در مورد اجرای عملیات های UPDATE در آرایه ها صحبت کنیم. همانطور که می دانید آرایه ها داده هایی مستقیم نیستند بلکه درون خودشان داده های دیگری را دارند و این مسئله آن ها را از داده های دیگر مانند رشته ها و اعداد جدا می کند. برای این جسله ای همان پایگاه داده ی user استفاده می کنیم بنابراین بهتر است بدون مقدمه شروع کنیم. فرض کنید که هدف ما ویرایش تمام کاربرانی باشد که Gym را در hobbies خود دارند اما frequency آن 3 یا بیشتر است. بهتر است ابتدا روی نوشتن فیلتر آن تمرکز کنیم بنابراین من با find شروع می کنم. ما دو شرط مختلف را برای یک فیلد داریم بنابراین باید از and$ استفاده کنیم. شروط ما وجود Gym و مساوی بودن یا بیشتر بودن frequency از 3 است. اجرای کوئری بالا کاربران Amir (با Frequency شش) و Javad (با frequency دو) را به ما می دهد. آیا یادتان است که چرا Javad برگردانده شده است در حالی که frequency او برابر 2 است؟ ما در فصل قبل در مورد این موضوع صحبت کردیم که and$ به دنبال هر frequency ای که بالاتر یا مساوی با 3 باشد می گردد و اینطور نیست که frequency حتما باید برای Gym باشد. برای تصحیح این مسئله باید از elemMatch$ استفاده کنیم: