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

Tìm document thiếu trường nhất định trong MongoDB

Sử dụng toán tử $exists: false để tìm document không có trường cụ thể.

Cú pháp

db.tênCollection.find({"tênTrường": {$exists: false}}).pretty();

Ví dụ minh họa

Tạo collection findDocumentDoNotHaveCertainFields với schema không đồng nhất:

> db.findDocumentDoNotHaveCertainFields.insertOne({"MaNguoiDung": 101, "TenNguoiDung": "John", "TuoiNguoiDung": 21});
> db.findDocumentDoNotHaveCertainFields.insertOne({"TenNguoiDung": "David", "TuoiNguoiDung": 22, "MonYeuThich": ["C", "Java"]});
> db.findDocumentDoNotHaveCertainFields.insertOne({"TenNguoiDung": "Bob", "TuoiNguoiDung": 24, "MonYeuThich": ["MongoDB", "MySQL"]});

Document 1 có MaNguoiDung, document 2-3 có MonYeuThich.

Tìm document KHÔNG có trường MonYeuThich

> db.findDocumentDoNotHaveCertainFields.find({"MonYeuThich": {$exists: false}}).pretty();

Kết quả:

{ "_id": ObjectId("..."), "MaNguoiDung": 101, "TenNguoiDung": "John", "TuoiNguoiDung": 21 }

Lưu ý: $exists: false match cả document thiếu trường VÀ document có trường nhưng giá trị null. Dùng {$exists: true, $ne: null} để tìm có trường và không null.