Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

คำสั่ง MongoDB นับความถี่ของทุกอิลิเมนต์ในอาร์เรย์

ใช้ $unwind และ $group ร่วมกับ $sum

เพื่อนับความถี่ของแต่ละค่าในอาร์เรย์ข้ามหลายเอกสาร ให้ใช้ pipeline: $unwind แยกอาร์เรย์, $group นับแต่ละค่า, แล้วรวมผลลัพธ์

> db.demo184.insertOne({"Names": ["Chris", "David", "Bob"]});

คำสั่งนับความถี่:

db.demo184.aggregate([
  { "$unwind": "$Names" },
  { "$group": { "_id": "$Names", "count": { "$sum": 1 } } },
  { "$group": { "_id": null, "counts": { "$push": { "k": "$_id", "v": "$count" } } } },
  { "$replaceRoot": { "newRoot": { "$arrayToObject": "$counts" } } }
])

ผลลัพธ์: { "Carol": 1, "David": 1, "Chris": 3, "Bob": 2, "Mike": 1 }