כיצד לספור מסמכים עם ספירה מצטברת של MongoDB

Kyzd Lspwr Msmkym M Spyrh Mztbrt Sl Mongodb



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

דוגמה 01

כדי לבצע את פעולת $count בשדות של אוסף מסד נתונים ב- MongoDB, אנחנו צריכים שיהיו לנו רשומות רבות. לכן, יצרנו אוסף בשם 'Test' והכנסנו לתוכו 12 רשומות בו זמנית באמצעות הפונקציה insertMany() . כעת, הרשומות של אוסף 'מבחן' זה הוצגו במעטפת MongoDB באמצעות שאילתת הפונקציה find(). אתה יכול לראות שיש לו בסך הכל שלושה שדות:_id, name וציון.

test> db.Test.find({})







כעת, כדי להחיל את שלב $count על כל שדה, עלינו להשתמש בפונקציית המצטבר של MongoDB בתוך הוראת 'db'. הפונקציה המצטברת מורכבת מהצהרת התנאי, לרוב באמצעות האופרטור $match בשדה ספציפי, ואחריו שדה חדש המציג את הספירה הכוללת שהתקבלה משדה התנאי שצוין באמצעות האופרטור $count.



במקרה שלנו, השתמשנו באופרטור $match כדי לחפש את הרשומות התואמות עבור הערך '60' בשדה הניקוד, בעוד האופרטור $count שימש כדי לספור את המספר הכולל של הרשומות שנלקחו ולהציגן תחת שדה חדש בשם 'SameScore'. הפלט עבור שאילתה זו הראה שדה 'SameScore' עם הערך '2' המציין שיש שתי רשומות עם הערך 'ציון' '60' הוא 2 באוסף 'Test'.



db.Test.aggregate([ { $match: { 'ציון' : 60 } }, { $count: 'אותו ציון' } ])

אתה יכול גם להשתמש בצבירה של $count כדי לספור את השדות מלבד מספרים, כגון השדה 'שם' של אוסף הבדיקות. השתמשנו בצבירה של התאמה כדי לחפש את הרשומה באוסף שבה לשדה השם יש את הערך 'John'. צבירת הספירה ספרה בהצלחה את המספר הכולל של רשומות שהותאמו, שהוא 2.





db.Test.aggregate([ { $match: { 'שֵׁם' : 'ג'ון' } }, { $count: 'אותו שם' } ])

דוגמה 02

בואו נעדכן את השאילתה לעיל ונחיל תנאי נוסף כדי לקבל רשומות שונות. הפעם, נחיל את צבירת ה-$match של שדה הניקוד כדי לקבל את הספירה הכוללת של רשומות שבהן לשדה הניקוד יש ערך של פחות מ-30. צבירת הספירה תהיה ספירת המספר הכולל של רשומות והוספה לרשומות חדשות. העמודה 'GradeD.' הפלט מציג את התוצאה '2' כמספר הספירה עבור הערך המותאם.

db.Test.aggregate( [ { $match: { score: { $lt: 30 } } }, { $count: 'מְדוּרָג' } ])

אתה יכול גם להשתמש בצבירה של $count תוך יישום האופרטורים הלוגיים לביצוע יותר מתנאי אחד ברשומות השדה. לכן, בסך הכל שני תנאים הוחלו על השדה 'ציון' באמצעות האופרטור $and: gte (גדול או שווה ל) ו-lte (קטן ושווה ל). שני התנאים חייבים להיות נכונים כדי לקבל את התוצאה ולספור את הרשומות שלה. הספירה הכוללת מראה שיש חמש רשומות עם הקריטריונים התואמים.



db.Test.aggregate( [ { $match: { '$ו' : [ { 'ציון' : {$gte: 60 }}, { 'ציון' : {$lte: 80 }} ] }},

{$count: 'כיתה ב' } ])

דוגמה 03

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

לשם כך, עליך להשתמש ב-$group aggregation בתוך פקודת הפונקציה aggregate, כמו להלן. נעשה שימוש בשדה _id כדי לציין את השדה 'שם' עליו יפעל צבירת הספירה. יחד עם זה, השדה המוגדר על ידי NameCount ישתמש בצבירה של $count כדי לספור מספר כפילויות בשדה 'שם'.

הפלט עבור שאילתה זו הוצג מתחת. הוא מכיל את הערכים מהשדה 'שם' ומספר הספירה שלהם בתוך השדה NameCount לפי כפילויות של ערכים, כגון של Cillian יש 4 כפילויות, וכן הלאה.

db.Test.aggregate([ { $group: { _id: '$name' , NameCount: { $count: {} }, }, }, ])

דוגמה 04

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

test> db.Teacher.find({})

כעת, החלנו את הפונקציה המצטברת המכילה את אופרטור ההתאמה. כמו כן, האופרטור $and הוחל על תת השדה 'מתמטיקה' של השדה 'תת', המכיל שני תנאים שונים. לאחר מכן חושבה הספירה. הפלט מראה שיש שתי רשומות שבהן למתמטיקה של שדה המשנה יש יותר מ-10 ופחות מ-20 ערכים.

db.Teacher.aggregate( [ { $match: { '$ו' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: עשרים }} ] }}, { $count: 'כיתה א' } ])

דוגמה 05

הבה נסתכל על הדוגמה האחרונה כדי להמחיש את השימוש בפונקציית count() הפעם במקום להשתמש בצבירה count. אז, הפונקציה count() הוחלה על השדה מסוג array של אוסף 'Teacher', כלומר 'shift'. באמצעות האינדקסים עבור שדה המערך באמצעות אינדקס 2, ציינו את קריטריוני ההתאמה כ'לילה'. הוא מוציא '2' כמספר הכולל של ספירות עבור הערך 'לילה'.

db.Teacher.count({ 'shift.2' : 'לַיְלָה' })

באופן דומה מאוד, ניתן להחיל את הפונקציה count() גם על השדות המקוננים, כמו שדה המשנה 'phy' של השדה 'sub' מהאוסף 'Teacher'. ציינו את קריטריוני ההתאמה באמצעות האופרטור 'lte' המציין ערכים פחות מ-14 בתת-השדה 'phy'. הפלט של הוראה זו הציג '2', כלומר 4 רשומות עם ערך נמוך מ-14.

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

סיכום

מדריך זה הדגים והרחיב את השימוש בצבירה של $count של MongoDB עם מספר דוגמאות קוד. הדוגמאות כוללות את ההשלכה של צבירת ספירה כדי להביא את מספר הספירה עבור רשומות ערך ספציפיות וכל רשומות השדה דרך האוספים. כמו כן, הוא כולל שימוש בצבירה של ספירה בשדות מערך ושדות משובצים (מקוננים). בסופו של דבר, דוגמת הפונקציה count() נכללה כדי לעשות הבדל בין השימוש בצבירה של ספירה לפונקציית count.