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

วิธีสุ่มเอกสาร (Get Random Record) จาก MongoDB

เพื่อสุ่มเอกสารจาก MongoDB ใช้ Aggregation Pipeline กับ Stage $sample ไวยากรณ์:


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 })

แสดงเอกสารทั้งหมด


> db.employeeInformation.find().pretty();

สุ่มเอกสาร 1 รายการ


> 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 }

$sample ใช้ Reservoir Sampling เหมาะสำหรับสุ่มตัวอย่างขนาดเล็กจากข้อมูลใหญ่