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

วิธีนับจำนวนรายการในอาร์เรย์ด้วย MongoDB


ใช้ .length ใน MongoDB Shell

วิธีง่ายที่สุดในการนับจำนวนสมาชิกในอาร์เรย์คือใช้ property .length บนผลลัพธ์ของ findOne()

ตัวอย่างข้อมูล

> db.demo440.insertOne({ "Name": "Chris", "ListOfFriends": ["John", "Sam", "Mike"] });
> db.demo440.insertOne({ "Name": "David", "ListOfFriends": ["Mike", "Bob", "Carol"] });

Query นับจำนวนเพื่อนของ David

> db.demo440.findOne({ 'Name': 'David' }).ListOfFriends.length;

ผลลัพธ์

3

วิธีอื่นๆ สำหรับนับใน Aggregation

// ใช้ $size ใน aggregation (MongoDB 3.2+)
db.demo440.aggregate([
  { $match: { Name: "David" } },
  { $project: { friendCount: { $size: "$ListOfFriends" } } }
]);

// ใช้ $cond กับ $size สำหรับ handle null/missing array
db.demo440.aggregate([
  { $project: { friendCount: { $cond: { if: { $isArray: "$ListOfFriends" }, then: { $size: "$ListOfFriends" }, else: 0 } } } }
]);

เปรียบเทียบวิธี

วิธีเหมาะสำหรับข้อจำกัด
.length (shell)Ad-hoc query, ตรวจสอบเร็วใช้ได้เฉพาะใน shell, ต้อง findOne ก่อน
$size (aggregation)ใน pipeline, รายงาน, dashboarderror ถ้าฟิลด์ไม่ใช่อาร์เรย์
$cond + $sizeข้อมูลไม่สม่ำเสมอ (อาจ null/ขาดหาย)ซับซ้อนกว่า