מה זה db.collection.updateOne() ב- MongoDB?

Mh Zh Db Collection Updateone B Mongodb



MongoDB הוא מסד נתונים רב עוצמה לא יחסי שיכול לאחסן מסמכים מרובים. לפעמים, ייתכן שהמשתמש יצטרך לעדכן מסמך בודד שעומד בקריטריונים מסוימים. במצב זה, הם יכולים להשתמש ב' db.collection.updateOne() שיטה, אשר מעדכנת ומשנה את המסמך הראשון שעומד בקריטריוני הבחירה ומשנה אותו.

מהי שיטת 'db.collection.updateOne()' ב- MongoDB?

ה ' db.collection.updateOne() השיטה מעדכנת מסמך בודד התואם את הקריטריונים שהוגדרו. אם יותר ממסמך אחד תואם את הקריטריונים רק המסמך הראשון ישונה. ניתן להשתמש בו עם מפעילי עדכונים, כגון ' $סט ', ' $inc עוד הרבה .

כיצד להשתמש בשיטת 'db.collection.updateOne()' ב- MongoDB?

ה ' db.collection.updateOne() ניתן להשתמש בשיטה כדי לעדכן שדה בודד כמו גם שדות מרובים של מסמך בודד התואמים את קריטריוני הבחירה. יתרה מכך, שיטה זו יכולה גם להוסיף שדה למסמך וניתן להשתמש בה עם אופרטורים של עדכונים. התחביר של ' db.collection.updateOne() ' השיטה מסופקת להלן:







תחביר בסיסי



db.collection.updateOne ( { מסנן_קריטריונים } , { עדכון } , { אפשרויות } )

כאן בתחביר לעיל:



  • שיטה זו תעדכן את המסמך הראשון שעומד בקריטריוני הבחירה
  • ה ' מסנן_קריטריונים ' מגדיר את הקריטריונים לעדכון
  • ה ' עדכון ' מכיל את השדות שישונו במסמך
  • ה ' אפשרויות ' ארגומנט הוא ארגומנט אופציונלי שמשנה את פעולתה של שיטה זו, כגון ' להרגיז ' ו' רֶמֶז

עבור פוסט זה, נשתמש ב-' Linuxhint_Col2 ' מסמכי האוסף כדי להדגים את פעולתו של ' db.collection.updateOne() ' שיטה. כדי להציג את המסמכים המאוחסנים באוסף זה בצע את הפקודה שסופקה:





db.Linuxhint_Col2.find ( )

תְפוּקָה

הפלט אחזר את כל המסמכים המאוחסנים ב' Linuxhint_Col2 ' אוסף.



דוגמה 1: עדכן שדה בודד
כדי לעדכן את השדה הבודד במסמך, הגדר את קריטריוני הבחירה שלו ועדכן את הקריטריונים. ניתן להגדיר את קריטריוני העדכון באמצעות אופרטורי העדכון. תן לנו להריץ שאילתה כדי לעדכן את ' דמי דוגמנות 'שדה ל' 18000 ' איפה ה ' שם משפחה 'אובייקט שווה' דפ ' במסמך:

db.Linuxhint_Col2.updateOne ( { 'שם_דגם.שם_משפחה' : 'דפ' } , { $סט : { דמי דוגמנות: 18000 } } )

תְפוּקָה

הפלט החזיר את הודעת ההצלחה.

כדי לאמת את השינויים שבוצעו, אחזר את המסמך המושפע באמצעות ' למצוא() ' פקודה:

db.Linuxhint_Col2.find ( { 'שם_דגם.שם_משפחה' : 'דפ' } )

תְפוּקָה

הפלט אימת שהמסמך עודכן בהצלחה.

דוגמה 2: הוסף שדה חדש באמצעות שיטת 'db.collection.updateOne()'.
ה ' db.collection.updateOne() שיטת ' מוסיפה שדה חדש באמצעות ' $סט ' אופרטור במסמך אם הוא לא קיים כבר. בתור ' ניסיון שדה ' אינו קיים עבור המסמכים שבהם ' דמי דוגמנות ' זה פחות מ ' 9000 '.

הבה נוסיף את השדה החדש ' ניסיון 'עם הערך' מַתחִיל ' במסמך שבו ' דמי דוגמנות ' זה פחות מ ' 9000 ' באמצעות השאילתה הזו:

db.Linuxhint_Col2.updateOne ( { 'עמלת_דוגמנות' : { $lt : 9000 } } , { $סט : { 'ניסיון' : 'מַתחִיל' } } )

תְפוּקָה

הפלט מחזיר את ההודעה שמציינת שמסמך אחד תואם את קריטריוני הבחירה ושונה בהצלחה.

תן לנו לאמת זאת על ידי שליפת כל המסמכים הזמינים באוסף ' Linuxhint_Col2 ”:

db.Linuxhint_Col2.find ( )

תְפוּקָה

הפלט מראה שמסמך אחד שעומד בתנאי השתנה, ושדה חדש הוכנס בהצלחה.

דוגמה 3: עדכון שדות מרובים של מסמך באמצעות שיטת 'db.collection.updateOne()'
המשתמש יכול אפילו לשנות מספר שדות במסמך אחד. כאן שאילתה זו המופיעה להלן תשנה את שם המשפחה והגיל של המסמך שבו ' שם פרטי ' שווים ' נועה ':

db.Linuxhint_Col2.updateOne ( { 'Model_Name.First_Name' : 'נוח' } , { $סט : { 'שם_דגם.שם_משפחה' : 'צְבִיָה' , 'גיל_דגם' : 23 } } )

תְפוּקָה

השאילתה בוצעה ללא כל שגיאה.

כדי לאמת את השינויים, השתמש בשיטת 'find()' כדי לאחזר את המסמך שבו ' שם פרטי ' שווים ' נועה :

db.Linuxhint_Col2.find ( { 'Model_Name.First_Name' : 'נוח' } )

תְפוּקָה

הפלט החזיר את המסמך ששונה בהצלחה.

דוגמה 4: השתמש בשיטת 'db.collection.updateOne()' עם מפעילי עדכון
כמו בדוגמה הקודמת, השתמשנו ב-' $סט ' עדכן אופרטור כדי לשנות את הערכים ב' db.collection.updateOne() ' שיטה. תן לנו לנסות להשתמש באופרטור עדכון אחר ' $inc ' שמגדיל את השדה עם הכמות שצוינה.

כאן בשאילתה המסופקת להלן, השיטה מחפשת את המסמך שבו ' שם פרטי ' שווים ' קייט ' ומוסיף ' 1000 ' בתוך ה ' דמי דוגמנות ערך השדה:

db.Linuxhint_Col2.updateOne ( { 'Model_Name.First_Name' : 'קייט' } , { $inc : { דמי דוגמנות: 1000 } } )

תְפוּקָה

הפלט החזיר הודעת הצלחה.

כדי לראות את השינויים, השתמש ב-' למצוא() שיטה לאחזר את המסמך המושפע:

db.Linuxhint_Col2.find ( { 'Model_Name.First_Name' : 'קייט' } )

תְפוּקָה

הפלט מציג את הערך שהשתנה של ' דמי דוגמנות '.

דוגמה 5: הוסף מסמך חדש אם הוא לא קיים כבר באמצעות טיעון 'upsert'.
ניתן להשתמש בארגומנט האופציונלי כדי לשנות את ההתנהגות של שיטה זו. אפשרות אחת כזו היא ' להרגיז ” שמוסיף מסמך חדש אם אין מסמך קיים שכבר עומד בקריטריוני הבחירה שהוגדרו בשאילתה.

הבה ננסה להוסיף מסמך חדש על ידי הגדרת קריטריוני הבחירה שאינם עומדים במסמכים שכבר קיימים. לאחר מכן, הגדר עבורו כמה שדות והוסף את האפשרות ' להרגיז ' כ'נכון' כפי שמוצג בפקודה המסופקת להלן:

db.Linuxhint_Col2.updateOne ( { 'Model_Name.First_Name' : 'דוד' } , { $סט : { דמי דוגמנות: 10000 ,  Model_Age: 23 , 'Model_Name.Last_Name' : 'נַפָּח' } } , { להרגיז: נָכוֹן } )

תְפוּקָה

הפלט הראה את ההודעה המאושרת כאמת.

לבסוף, אמת את השינוי שלו על ידי הפעלת הפקודה הזו:

db.Linuxhint_Col2.find ( { 'Model_Name.First_Name' : 'דוד' } )

תְפוּקָה

הפלט הראה שהמסמך החדש נוסף בהצלחה.

סיכום

ה ' db.collection.updateOne() שיטת ” ב- MongoDB משמשת לעדכון המסמך הראשון שעומד בקריטריוני הבחירה. זה יכול לשנות שדות בודדים כמו גם שדות מרובים במסמך באמצעות אופרטורי העדכון, כגון ' $סט ' ו' $inc '. יתרה מכך, שיטה זו מקבלת גם טיעונים אופציונליים לשינוי התנהגות השיטה, כגון ' להרגיז ” שמוסיף מסמך חדש למקרה שקריטריוני הבחירה אינם תואמים אף מסמך קיים. פוסט זה דן בשימוש ב' db.collection.updateOne() שיטה ב- MongoDB.