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

Toán tử $all trong MongoDB: Khớp mảng chứa tất cả phần tử chỉ định

Toán tử $all chọn tài liệu mà trường mảng chứa tất cả các giá trị chỉ định (thứ tự không quan trọng). Khác với $in (chứa ít nhất một), $all yêu cầu chứa hết.

Dữ liệu mẫu

> db.demo163.insertOne({ "ClientDetails": [{ "ClientName": "Chris" }, { "ClientName": "David" }] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d49e4f06af551997c5") }
> db.demo163.insertOne({ "ClientDetails": [{ "ClientName": "Mike" }, { "ClientName": "Sam" }] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d59e4f06af551997c6") }
> db.demo163.insertOne({ "ClientDetails": [{ "ClientName": "Robert" }, { "ClientName": "Sam" }] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d59e4f06af551997c7") }

Xem dữ liệu

> db.demo163.find();
{ "_id" : ObjectId("5e3686d49e4f06af551997c5"), "ClientDetails" : [ { "ClientName" : "Chris" }, { "ClientName" : "David" } ] }
{ "_id" : ObjectId("5e3686d59e4f06af551997c6"), "ClientDetails" : [ { "ClientName" : "Mike" }, { "ClientName" : "Sam" } ] }
{ "_id" : ObjectId("5e3686d59e4f06af551997c7"), "ClientDetails" : [ { "ClientName" : "Robert" }, { "ClientName" : "Sam" } ] }

Truy vấn: ClientDetails chứa CẢ "Mike" VÀ "Sam"

> db.demo163.find({"ClientDetails": {$all: [{"ClientName": "Mike"}, {"ClientName": "Sam"}]}});

Kết quả

{ "_id" : ObjectId("5e3686d59e4f06af551997c6"), "ClientDetails" : [ { "ClientName" : "Mike" }, { "ClientName" : "Sam" } ] }

Lưu ý: $all hoạt động trên mảng các đối tượng bằng cách so khớp từng điều kiện đối tượng. Tài liệu thứ 3 có "Sam" nhưng thiếu "Mike" nên không khớp. Đối với mảng giá trị đơn giản (string/number), cú pháp: {tags: {$all: ["mongodb", "database"]}}.