Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Thực hiện truy vấn Regex với PyMongo

PyMongo là driver Python chính thức cho MongoDB. Sử dụng $regex trong query dictionary để thực hiện regex search.

Cú pháp PyMongo

db.tênCollection.find({'tênTrường': {'$regex': '^từKhóa'}})

Ví dụ minh họa

Tạo collection performRegex:

> db.performRegex.insertOne({
  "TenKhachHang": "Larry",
  "ThongTinThuMuc": ["Folder 1", "Folder 2", "Folder 3", "Folder 4", "Folder 5"],
  "ViTriThuMucChinh": "/MainFolder/Details/ClientFolder"
});
> db.performRegex.insertOne({
  "TenKhachHang": "Larry",
  "ThongTinThuMuc": ["ClientFolder 1", "ClientFolder 2", "ClientFolder 3", "ClientFolder 4", "ClientFolder 5"],
  "ViTriThuMucChinh": "/MainFolder/Details/ClientFolder"
});

Trường hợp 1: Tìm document có phần tử mảng bắt đầu bằng "ClientFolder"

> db.performRegex.find({'ThongTinThuMuc': {'$regex': '^ClientFolder'}}).pretty();

Trả về document thứ 2.

Trường hợp 2: Tìm document có phần tử mảng bắt đầu bằng "Folder"

> db.performRegex.find({'ThongTinThuMuc': {'$regex': '^Folder'}}).pretty();

Trả về document thứ 1.

Trong Python code (PyMongo)

from pymongo import MongoClient
import re

client = MongoClient()
db = client.tenDatabase
collection = db.performRegex

# Cách 1: Regex object
results = collection.find({'ThongTinThuMuc': {'$regex': re.compile('^ClientFolder')}})

# Cách 2: String pattern với $options
results = collection.find({'ThongTinThuMuc': {'$regex': '^ClientFolder', '$options': 'i'}})

Lưu ý: Regex trên mảng (ThongTinThuMuc) match nếu ít nhất một phần tử thỏa mãn pattern.