บทความนี้แบ่งปันการดำเนินการ Java MongoDB Fuzzy Query และ Query Pagination สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
เงื่อนไขการสืบค้นฟัซซี่:
1. การจับคู่ที่แน่นอน
รูปแบบรูปแบบ = pattern.compile ("^name $", pattern.case_insensitive);
2. การจับคู่ที่ถูกต้อง
รูปแบบรูปแบบ = pattern.compile ("^.*name $", pattern.case_insensitive);
3. การจับคู่ซ้าย
รูปแบบรูปแบบ = pattern.compile ("^name.*$", pattern.case_insensitive);
4. การจับคู่ฟัซซี่
รูปแบบรูปแบบ = pattern.compile ("^.*name8.*$", pattern.case_insensitive);
คิวรีบันทึกทั้งหมด:
นับ () ส่งคืนจำนวนการสืบค้นทั้งหมด
การเรียงลำดับการเรียงลำดับ:
basicDbObject sort = new BasicDbObject ();
sort.put ("ชื่อ", 1);
1. หมายถึงคำสั่งเชิงบวก -1. แสดงถึงลำดับย้อนกลับ
การสืบค้นการปนเปื้อน:
ข้าม () จำนวนเร็กคอร์ดถูกข้ามไป
ขีด จำกัด () จำนวนบันทึกที่ส่งคืน
ตัวอย่างรหัส:
แพ็คเกจ com.what21.mongodb.demo; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า java.util.set; นำเข้า java.util.regex.pattern; นำเข้า com.mongoDb.basicdbobject; นำเข้า com.mongodb.db; นำเข้า com.mongodb.dbcollection; นำเข้า com.mongodb.dbcursor; นำเข้า com.mongoDb.dbobject; นำเข้า com.mongoDb.mongoclient; com.mongoDb.serveraddress; Public Class OperatedEmo2 { / ** * @return * @throws Exception * / Public Static Mongoclient getMongoclient () โยนข้อยกเว้น {ลอง { // ========================================================================================== ServerList.add (ServerAddress ใหม่ ("192.168.18.85", 27017)); // ================================================================== =/ รายการ <Mongocredential> MCLIST = ใหม่ String username = "root"; ฐานข้อมูลสตริง = "สาธิต"; char [] password = "root123" .tochararray (); mclist.add (mongocredential.createcredential (ชื่อผู้ใช้ฐานข้อมูลรหัสผ่าน)); // ============================================================================================== // จำนวนการเชื่อมต่อสูงสุดที่สามารถสร้างได้ด้วยฐานข้อมูลเป้าหมายคือ 50 builder.ConnectionsPerhost (50); // หากการเชื่อมต่อทั้งหมดมีการใช้งานอยู่ในปัจจุบันอาจมี 50 เธรดที่รอคิวเพื่อรอผู้สร้าง ThreadsallowedtoblockForConnectionMultiplier (50); // เมื่อเธรดเข้าถึงฐานข้อมูลเวลารอสูงสุดก่อนที่จะได้รับการเชื่อมต่อฐานข้อมูลที่มีอยู่ให้สำเร็จคือ 2 นาที // สิ่งนี้อันตรายกว่า หากไม่ได้รับการเชื่อมต่อหลังจาก maxwaittime เธรดจะโยนข้อยกเว้น // ดังนั้น maxwaittime ที่ตั้งไว้ที่นี่ควรมีขนาดใหญ่พอที่จะหลีกเลี่ยงการเข้าถึงฐานข้อมูลล้มเหลวเนื่องจาก builders threads ที่คิวมากเกินไป MaxWaittime (1,000*60*2); // ตั้งค่าหมดเวลาสำหรับการสร้างการเชื่อมต่อกับฐานข้อมูลเป็น 1 นาที builder.connecttimeout (1,000*60*1); - - Mongoclientoptions mco = builder.build (); ส่งคืน Mongoclient ใหม่ (ServerList, McList, MCO); } catch (exception e) {โยน e; }} / ** * @param dbname * @return * @throws Exception * / สาธารณะคงที่ db getDb (สตริง dbname) โยนข้อยกเว้น {return getMongoclient (). getDB (dbname); } / ** * @param db * / การรวบรวมโมฆะคงที่สาธารณะ (db db) {set <string> cols = db.getCollectionNames (); สำหรับ (สตริง collname: colls) {system.out.println (collname); }} / ** * แบบสอบถามสำหรับบันทึกทั้งหมด * * @param db * @param ชื่อ * / การนับโมฆะคงที่สาธารณะ (db db, ชื่อสตริง) {dbcollection dbcoll = db.getCollection (ชื่อ); int count = dbcoll.find (). count (); System.out.println ("ทั้งหมด:" + count + "s"); } / ** * Query ฟัซซี่ * * @param db * @param ชื่อ * / แบบสอบถามโมฆะสาธารณะคงที่ (db db, ชื่อสตริง) {dbcollection dbcoll = db.getCollection (ชื่อ); // การจับคู่ที่แน่นอน // รูปแบบรูปแบบ = pattern.compile ("^name $", pattern.case_insensitive); // การจับคู่ขวา // รูปแบบรูปแบบ = pattern.compile ("^.*ชื่อ $", pattern.case_insensitive); // การจับคู่ซ้าย // รูปแบบรูปแบบ = pattern.compile ("^name.*$", pattern.case_insensitive); // รูปแบบการจับคู่แบบฟัซซี่ = pattern.compile ("^.*name8.*$", pattern.case_insensitive); basicDbObject query = new BasicDbObject (); query.put ("ชื่อ", รูปแบบ); basicDbObject sort = new BasicDbObject (); // 1 หมายถึงคำสั่งซื้อในเชิงบวก -1, หมายถึงการเรียงลำดับลำดับการเรียงลำดับ ("ชื่อ", 1); dbcursor cur = dbcoll.find (แบบสอบถาม) .sort (เรียงลำดับ); จำนวน int = 0; ในขณะที่ (cur.hasnext ()) {dbobject obj = cur.next (); System.out.print ("name =" + obj.get ("ชื่อ")); System.out.print (", email =" + obj.get ("อีเมล")); System.out.println (", passwd =" + obj.get ("passwd")); นับ ++; } system.out.println ("ทั้งหมด:" + count + "รายการ"); } / ** * การสืบค้น pagination * * @param db * @param ชื่อ * @param start * @param pagesize * / หน้าโมฆะคงที่สาธารณะ (db db, ชื่อสตริง, int เริ่ม, หน้า int) {dbcollection dbcoll = db.getCollection (ชื่อ); basicDbObject sort = new BasicDbObject (); sort.put ("ชื่อ", 1); dbcursor cur = dbcoll.find (). เรียงลำดับ (เรียงลำดับ) .skip (เริ่มต้น). ลิมิต (หน้า) ;; จำนวน int = 0; ในขณะที่ (cur.hasnext ()) {dbobject obj = cur.next (); System.out.print ("name =" + obj.get ("ชื่อ")); System.out.print (", email =" + obj.get ("อีเมล")); System.out.println (", passwd =" + obj.get ("passwd")); นับ ++; } system.out.println ("ทั้งหมด:" + count + "s"); } / ** * @param args * @throws Exception * / โมฆะคงที่สาธารณะหลัก (String [] args) โยนข้อยกเว้น {db db = getDB ("ตัวอย่าง"); คอลเลกชัน (db); ชื่อสตริง = "ผู้ใช้"; System.out.println ("count () ====================================================="); นับ (db, ชื่อ); System.out.println ("Query () ====================================================="); แบบสอบถาม (db, ชื่อ); System.out.println ("หน้า () ====================================================="); หน้า (db, ชื่อ, 10, 10); -ข้างต้นคือรหัสการใช้งานสำหรับการดำเนินการ Java MongoDB แบบสอบถามฟัซซี่และการสืบค้นการปนเปื้อน ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน