Sử dụng toán tử $where với JavaScript để lọc document dựa trên độ dài chuỗi.
Cú pháp
db.tênCollection.find({$where: 'this.tênTrườngChuỗi.length > sốNguyên'}).pretty();
Ví dụ minh họa
Tạo collection stringFieldLengthDemo:
> db.stringFieldLengthDemo.insertOne({"MaNguoiDung": 1, "TenNguoiDung": "Adam Smith"});
> db.stringFieldLengthDemo.insertOne({"MaNguoiDung": 2, "TenNguoiDung": "Carol Taylor"});
> db.stringFieldLengthDemo.insertOne({"MaNguoiDung": 3, "TenNguoiDung": "James Brown"});
> db.stringFieldLengthDemo.insertOne({"MaNguoiDung": 4, "TenNguoiDung": "John Smith"});
> db.stringFieldLengthDemo.insertOne({"MaNguoiDung": 5, "TenNguoiDung": "David Miller"});
> db.stringFieldLengthDemo.insertOne({"MaNguoiDung": 6, "TenNguoiDung": "John Williams"});
> db.stringFieldLengthDemo.insertOne({"MaNguoiDung": 7, "TenNguoiDung": "Chris Evans"});
Tìm tên dài hơn 11 ký tự
> db.stringFieldLengthDemo.find({$where: 'this.TenNguoiDung.length > 11'}).pretty();
Kết quả:
{ "_id": ObjectId("..."), "MaNguoiDung": 2, "TenNguoiDung": "Carol Taylor" }
{ "_id": ObjectId("..."), "MaNguoiDung": 5, "TenNguoiDung": "David Miller" }
{ "_id": ObjectId("..."), "MaNguoiDung": 6, "TenNguoiDung": "John Williams" }
⚠️ Cảnh báo hiệu năng: $where chạy JavaScript engine, rất chậm trên collection lớn. Không dùng index.
Thay thế tốt hơn (MongoDB 4.4+): Dùng $expr với $strLenCP:
db.collection.find({$expr: {$gt: [{$strLenCP: "$TenNguoiDung"}, 11]}})