คุณสามารถใช้ตัวดำเนินการ $size สำหรับขนาดอาร์เรย์ภายในใน MongoDB ไวยากรณ์มีดังนี้:
db.internalArraySizeDemo.aggregate(
[
{
$group: {
_id:yourObjectIdValue,
anyFieldName: {$first: {$size: "$yourArrayName" }}
}
}
]
); เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างคอลเลกชันพร้อมเอกสารบางส่วน แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้:
>db.internalArraySizeDemo.insertOne({"EmployeeName":"Mike","EmployeeTechnology":["Jav
a Web Development","Python Web Development"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6eff586fd07954a48906b2")
}
> db.internalArraySizeDemo.insertOne({"EmployeeName":"Sam","EmployeeTechnology":["C
with Graphics","Game Development with C++ Language","MatLab"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6effcd6fd07954a48906b3")
} แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้:
> db.internalArraySizeDemo.find().pretty();
ต่อไปนี้เป็นผลลัพธ์:
{
"_id" : ObjectId("5c6eff586fd07954a48906b2"),
"EmployeeName" : "Mike",
"EmployeeTechnology" : [
"Java Web Development",
"Python Web Development"
]
}
{
"_id" : ObjectId("5c6effcd6fd07954a48906b3"),
"EmployeeName" : "Sam",
"EmployeeTechnology" : [
"C with Graphics",
"Game Development with C++ Language",
"MatLab"
]
} นี่คือแบบสอบถามเพื่อรับขนาดอาร์เรย์ภายในโดยใช้ตัวดำเนินการ $size:
> db.internalArraySizeDemo.aggregate(
... [
... {
... $group: {
... _id:ObjectId("5c6eff586fd07954a48906b2"),
... EmployeeTechnology_count: {$first: {$size: "$EmployeeTechnology" }}
... }
... }
... ]
... ); ต่อไปนี้เป็นผลลัพธ์:
{ "_id" : ObjectId("5c6eff586fd07954a48906b2"), "EmployeeTechnology_count" : 2 }