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

Query เอกสารที่ขนาด Array มากกว่า 1 ใน MongoDB

ใช้ 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 แทน