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

Truy vấn MongoDB chỉ hiển thị _id, ẩn trường khác

Để chỉ hiển thị _id và ẩn các trường khác, sử dụng projection với giá trị 0 cho trường cần ẩn.

Tạo collection dữ liệu

> db.demo650.insertOne({_id:101, details:{Name:"Chris", Age:21}});
> db.demo650.insertOne({_id:102, details:{Name:"Bob", Age:22}});
> db.demo650.insertOne({_id:103, details:{Name:"Sam", Age:20}});
> db.demo650.insertOne({_id:104, details:{Name:"Robert", Age:24}});

Hiển thị đầy đủ

> db.demo650.find();

Kết quả:

{
  _id:101, details:{Name:"Chris", Age:21}
}, {
  _id:102, details:{Name:"Bob", Age:22}
}, {
  _id:103, details:{Name:"Sam", Age:20}
}, {
  _id:104, details:{Name:"Robert", Age:24}
}

Projection ẩn trường details

> db.demo650.find({}, {details: 0});

Kết quả (chỉ còn _id):

{ "_id" : 101 } { "_id" : 102 } { "_id" : 103 } { "_id" : 104 }

Giải thích projection:

  • Tham số 2 của find(query, projection)
  • {details: 0}: Ẩn trường details (0 = exclude)
  • _id luôn hiển thị trừ khi explicitly {_id: 0}
  • Không thể mix include (1) và exclude (0) trừ _id

Các ví dụ projection:

// Chỉ lấy Name, ẩn Age
db.demo650.find({}, {"details.Name": 1, "details.Age": 0, _id: 0})

// Lấy tất cả trừ Age
db.demo650.find({}, {"details.Age": 0})

// Chỉ lấy _id và Name
db.demo650.find({}, {"details.Name": 1, _id: 1})

Projection giúp giảm băng thông mạng và bộ nhớ khi chỉ cần một số trường.