ใช้ operator $size ร่วมกับ $where เพื่อ query เอกสารที่ขนาด Array มากกว่า 1:
db.yourCollectionName.find({$where: "this.yourArrayFieldName.length > 1"}).pretty();
สร้างข้อมูลตัวอย่าง
> db.arrayLengthGreaterThanOne.insertOne({"StudentName":"Larry","StudentTechnicalSubject":["Java","C","C++"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d6c4c0c3d5054b766a76a") }
> db.arrayLengthGreaterThanOne.insertOne({"StudentName":"Maxwell","StudentTechnicalSubject":["MongoDB"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d6c660c3d5054b766a76b") }
> db.arrayLengthGreaterThanOne.insertOne({"StudentName":"Maxwell","StudentTechnicalSubject":["MySQL","SQL Server","PL/SQL"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d6c800c3d5054b766a76c") }
แสดงเอกสารทั้งหมด
> db.arrayLengthGreaterThanOne.find().pretty();
Query Array size > 1
> db.arrayLengthGreaterThanOne.find({$where: "this.StudentTechnicalSubject.length > 1"}).pretty();
ผลลัพธ์ (เฉพาะเอกสารที่ Array มีสมาชิกมากกว่า 1)
{ "_id" : ObjectId("5c6d6c4c0c3d5054b766a76a"), "StudentName" : "Larry", "StudentTechnicalSubject" : [ "Java", "C", "C++" ] }
{ "_id" : ObjectId("5c6d6c800c3d5054b766a76c"), "StudentTechnicalSubject" : [ "MySQL", "SQL Server", "PL/SQL" ] }
เอกสารที่มี Array ขนาด 1 (เฉพาะ "MongoDB") ไม่ปรากฏในผลลัพธ์
หมายเหตุ:$whereใช้ JavaScript evaluation อาจช้ากว่า operator ปกติ สำหรับ Production ควรพิจารณาใช้$exprร่วม$sizeใน Aggregation Pipeline แทน