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

Truy vấn MongoDB khớp chính xác (Exact Match)

Để thực hiện truy vấn khớp chính xác trong MongoDB, bạn có thể sử dụng toán tử $exists kết hợp với kiểm tra chỉ số mảng. Dưới đây là ví dụ minh họa cách lọc tài liệu chứa giá trị chuỗi đơn lẻ "Chris" (không phải mảng).

Tạo dữ liệu mẫu

> db.demo290.insertOne({"ListOfName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4c0c9e5d93261e4bc9ea2d") }
> db.demo290.insertOne({"ListOfName":["Chris","David"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4c0cb05d93261e4bc9ea2e") }

Xem tất cả tài liệu

> db.demo290.find();
{ "_id" : ObjectId("5e4c0c9e5d93261e4bc9ea2d"), "ListOfName" : "Chris" }
{ "_id" : ObjectId("5e4c0cb05d93261e4bc9ea2e"), "ListOfName" : [ "Chris", "David" ] }

Truy vấn khớp chính xác

Sử dụng $and để kết hợp hai điều kiện: trường ListOfName không có phần tử ở chỉ số 0 (tức là không phải mảng) VÀ giá trị bằng "Chris".

> db.demo290.find({$and: [{'ListOfName.0': {$exists: false}}, {"ListOfName": 'Chris'}]});

Kết quả

{ "_id" : ObjectId("5e4c0c9e5d93261e4bc9ea2d"), "ListOfName" : "Chris" }

Giải thích: Điều kiện 'ListOfName.0': {$exists: false} đảm bảo chỉ chọn các tài liệu mà ListOfName là chuỗi đơn (không phải mảng), vì mảng luôn có chỉ số 0. Kết hợp với {"ListOfName": "Chris"} sẽ lọc chính xác tài liệu chứa chuỗi "Chris".