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

ทำ Regex Queries ใน MongoDB ด้วย PyMongo (Python)

PyMongo เป็นไลบรารี Python สำหรับทำงานกับ MongoDB การใช้ Regex ใน PyMongo ใช้ไวยากรณ์เดียวกับ Mongo Shell แต่เขียนในรูปแบบ Dictionary ของ Python

ไวยากรณ์

db.yourCollectionName.find({'yourFieldName':{'$regex':'^yourWords'}}).pretty();

ค้นหาเอกสารที่ฟิลด์ขึ้นต้นด้วยคำที่กำหนด

ตัวอย่างการใช้งาน

สร้างคอลเลกชัน performRegex:

> db.performRegex.insertOne({"ClientName":"Larry","ClientFolderInformation":["Folder 1","Folder 2","Folder 3","Folder 4","Folder 5"], "MainFolderLocation":"/MainFolder/Details/ClientFolder"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8a8b186cea1f28b7aa07f2") }
> db.performRegex.insertOne({"ClientName":"Larry","ClientFolderInformation":["ClientFolder 1","ClientFolder 2","ClientFolder 3","ClientFolder 4","ClientFolder 5"], "MainFolderLocation":"/MainFolder/Details/ClientFolder"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8a8b1d6cea1f28b7aa07f3") }

แสดงข้อมูล:

> db.performRegex.find().pretty();
{"_id" : ObjectId("5c8a8b186cea1f28b7aa07f2"), "ClientName" : "Larry", "ClientFolderInformation" : [ "Folder 1", "Folder 2", "Folder 3", "Folder 4", "Folder 5" ], "MainFolderLocation" : "/MainFolder/Details/ClientFolder" }
{"_id" : ObjectId("5c8a8b1d6cea1f28b7aa07f3"), "ClientName" : "Larry", "ClientFolderInformation" : [ "ClientFolder 1", "ClientFolder 2", "ClientFolder 3", "ClientFolder 4", "ClientFolder 5" ], "MainFolderLocation" : "/MainFolder/Details/ClientFolder" }

กรณี 1: ค้นหาเอกสารที่ ClientFolderInformation มีค่าเริ่มต้นด้วย "ClientFolder"

> db.performRegex.find({'ClientFolderInformation':{'$regex':'^ClientFolder'}}).pretty();
{"_id" : ObjectId("5c8a8b1d6cea1f28b7aa07f3"), "ClientName" : "Larry", "ClientFolderInformation" : [ "ClientFolder 1", "ClientFolder 2", "ClientFolder 3", "ClientFolder 4", "ClientFolder 5" ], "MainFolderLocation" : "/MainFolder/Details/ClientFolder" }

กรณี 2: ค้นหาเอกสารที่ ClientFolderInformation มีค่าเริ่มต้นด้วย "Folder"

> db.performRegex.find({'ClientFolderInformation':{'$regex':'^Folder'}}).pretty();
{"_id" : ObjectId("5c8a8b186cea1f28b7aa07f2"), "ClientName" : "Larry", "ClientFolderInformation" : [ "Folder 1", "Folder 2", "Folder 3", "Folder 4", "Folder 5" ], "MainFolderLocation" : "/MainFolder/Details/ClientFolder" }

ใน PyMongo เขียน query เหมือนกัน แต่ใช้ Python dictionary และ string regex ธรรมดา