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

Chọn trường (Field Selection) trong MongoDB với dot notation

Dot notation cho phép chỉ định chính xác trường lồng nhau cần trả về hoặc loại trừ trong projection của find(). Điều này giúp giảm lượng dữ liệu truyền tải và xử lý.

Dữ liệu mẫu

> db.demo302.insertOne({"Id":101,"details":[{"Name":"Chris",Age:21,"Subject":"MySQL"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4d746f5d93261e4bc9ea52") }
> db.demo302.insertOne({"Id":102,"details":[{"Name":"Bob",Age:23,"Subject":"MongoDB"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4d74815d93261e4bc9ea53") }
> db.demo302.insertOne({"Id":103,"details":[{"Name":"David",Age:20,"Subject":"Java"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4d74955d93261e4bc9ea54") }

Xem dữ liệu gốc

> db.demo302.find();
{ "_id" : ObjectId("5e4d746f5d93261e4bc9ea52"), "Id" : 101, "details" : [ { "Name" : "Chris", "Age" : 21, "Subject" : "MySQL" } ] }
{ "_id" : ObjectId("5e4d74815d93261e4bc9ea53"), "Id" : 102, "details" : [ { "Name" : "Bob", "Age" : 23, "Subject" : "MongoDB" } ] }
{ "_id" : ObjectId("5e4d74955d93261e4bc9ea54"), "Id" : 103, "details" : [ { "Name" : "David", "Age" : 20, "Subject" : "Java" } ] }

Truy vấn: Tìm Subject="MongoDB", chỉ trả về Subject

> db.demo302.find({"details.Subject":"MongoDB"},{"details.Name":0,"details.Age":0,"_id":0,"Id":0});

Kết quả

{ "details" : [ { "Subject" : "MongoDB" } ] }

Giải thích: Bộ lọc {"details.Subject":"MongoDB"} dùng dot notation để khớp phần tử trong mảng. Projection loại trừ details.Name, details.Age, _id, Id (giá trị 0). Kết quả chỉ còn trường Subject bên trong mảng details. Đây là kỹ thuật projection nâng cao cho mảng tài liệu nhúng.