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

Tìm chuỗi dài hơn độ dài cho trước trong MongoDB

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