ในการรับเร็กคอร์ดแบบสุ่มจาก MongoDB คุณสามารถใช้ฟังก์ชันการรวม ไวยากรณ์มีดังนี้:
db.yourCollectionName.aggregate([{$sample:{size:1}}]);
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างคอลเลกชันพร้อมเอกสารบางส่วน แบบสอบถามเพื่อสร้างคอลเลกชันมีดังนี้:
>db.employeeInformation.insert({"EmployeeId":1,"EmployeeName":"Maxwell","EmployeeAge":26}); WriteResult({ "nInserted" : 1 }) >db.employeeInformation.insert({"EmployeeId":2,"EmployeeName":"David","EmployeeAge":25}); WriteResult({ "nInserted" : 1 }) >db.employeeInformation.insert({"EmployeeId":3,"EmployeeName":"Carol","EmployeeAge":24}); WriteResult({ "nInserted" : 1 }) >db.employeeInformation.insert({"EmployeeId":4,"EmployeeName":"Bob","EmployeeAge":28}); WriteResult({ "nInserted" : 1 }) >db.employeeInformation.insert({"EmployeeId":5,"EmployeeName":"Sam","EmployeeAge":27); WriteResult({ "nInserted" : 1 })
ตอนนี้คุณสามารถแสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้:
> db.employeeInformation.find().pretty();
ต่อไปนี้เป็นผลลัพธ์:
{ "_id" : ObjectId("5c6d3079734e98fc0a434ae5"), "EmployeeId" : 1, "EmployeeName" : "Maxwell", "EmployeeAge" : 26 } { "_id" : ObjectId("5c6d308c734e98fc0a434ae6"), "EmployeeId" : 2, "EmployeeName" : "David", "EmployeeAge" : 25 } { "_id" : ObjectId("5c6d309d734e98fc0a434ae7"), "EmployeeId" : 3, "EmployeeName" : "Carol", "EmployeeAge" : 24 } { "_id" : ObjectId("5c6d30ab734e98fc0a434ae8"), "EmployeeId" : 4, "EmployeeName" : "Bob", "EmployeeAge" : 28 } { "_id" : ObjectId("5c6d30bb734e98fc0a434ae9"), "EmployeeId" : 5, "EmployeeName" : "Sam", "EmployeeAge" : 27 }
นี่คือแบบสอบถามเพื่อรับบันทึกแบบสุ่ม:
> db.employeeInformation.aggregate([{$sample:{size:1}}]).pretty();
ต่อไปนี้เป็นผลลัพธ์:
{ "_id" : ObjectId("5c6d30bb734e98fc0a434ae9"), "EmployeeId" : 5, "EmployeeName" : "Sam", "EmployeeAge" : 27 }
ให้เราสุ่มบันทึกโดยใช้แบบสอบถามเดียวกัน:
> db.employeeInformation.aggregate([{$sample:{size:1}}]).pretty();
ต่อไปนี้เป็นผลลัพธ์:
{ "_id" : ObjectId("5c6d308c734e98fc0a434ae6"), "EmployeeId" : 2, "EmployeeName" : "David", "EmployeeAge" : 25 }