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

Truy vấn tài liệu lồng nhau (nested document) trong MongoDB với dot notation

Sử dụng dot notation (ký hiệu dấu chấm) để truy cập trường trong tài liệu lồng nhau. Tạo collection:

> db.demo591.insert([
...   { "Name": "John", "Age": 23 },
...   { "Name": "Carol", "Age": 26 },
...   { "Name": "Robert", "Age": 29, "details": [ { "Email":"Robert@gmail.com","CountryName":"US" }, { "Post":35 } ] }
... ]);
BulkWriteResult({ "nInserted" : 3 })

Hiển thị dữ liệu (chỉ Robert có details):

> db.demo591.find();
{ "_id" : ObjectId("5e92dd08fd2d90c177b5bcd3"), "Name" : "John", "Age" : 23 }
{ "_id" : ObjectId("5e92dd08fd2d90c177b5bcd4"), "Name" : "Carol", "Age" : 26 }
{ "_id" : ObjectId("5e92dd08fd2d90c177b5bcd5"), "Name" : "Robert", "Age" : 29, "details" : [ { "Email" : "Robert@gmail.com", "CountryName" : "US" }, { "Post" : 35 } ] }

Truy vấn tìm tài liệu có details.Email = "Robert@gmail.com":

> db.demo591.find({"details.Email": "Robert@gmail.com"});

Kết quả:


Dot notation rules:

  • "details.Email" truy cập trường Email bên trong đối tượng trong mảng details
  • MongoDB tự động "đi vào" mảng để kiểm tra từng phần tử
  • Hoạt động cả khi details là mảng đối tượng