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

Lấy giá trị mảng từ truy vấn find trong MongoDB

Sử dụng dot notation (ký pháp dấu chấm) để truy vấn và chiếu (project) các trường bên trong mảng đối tượng.

Tạo collection:

> db.demo38.insertOne({"ClientDetails":[{"ClientId":101,"ClientName":"Chris"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e176abccfb11e5c34d898d9") }
> db.demo38.insertOne({"ClientDetails":[{"ClientId":102,"ClientName":"David"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e176ac7cfb11e5c34d898da") }
> db.demo38.insertOne({"ClientDetails":[{"ClientId":103,"ClientName":"Mike"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e176ad0cfb11e5c34d898db") }

Xem dữ liệu:

> db.demo38.find();
{ "_id" : ObjectId("5e176abccfb11e5c34d898d9"), "ClientDetails" : [ { "ClientId" : 101, "ClientName" : "Chris" } ] }
{ "_id" : ObjectId("5e176ac7cfb11e5c34d898da"), "ClientDetails" : [ { "ClientId" : 102, "ClientName" : "David" } ] }
{ "_id" : ObjectId("5e176ad0cfb11e5c34d898db"), "ClientDetails" : [ { "ClientId" : 103, "ClientName" : "Mike" } ] }

Truy vấn tìm tài liệu có ClientName="David" trong mảng:

> db.demo38.find({"ClientDetails.ClientName":"David"});

Kết quả:

{ "_id" : ObjectId("5e176ac7cfb11e5c34d898da"), "ClientDetails" : [ { "ClientId" : 102, "ClientName" : "David" } ] }

Mở rộng - Chỉ lấy trường cụ thể trong mảng (projection):

db.demo38.find({"ClientDetails.ClientName":"David"}, {"ClientDetails.$.ClientName": 1, _id: 0})

Kết quả: { "ClientDetails" : [ { "ClientName" : "David" } ] }

Toán tử $ trong projection trả về phần tử đầu tiên khớp với điều kiện query.