MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Hậu quả của việc sử dụng $ unwind trên các mảng lồng nhau?

Luôn luôn là một ý tưởng hay để nhận biết tài nguyên bộ nhớ khi $ thư giãn ing do quá trình sao chép dữ liệu xảy ra.

Sử dụng $ match để thu hẹp kết quả cho các tài liệu cụ thể mà bạn đang tìm kiếm tất nhiên là một cách để giảm dung lượng bộ nhớ cần thiết để chứa dữ liệu trả về.

Một cách khác để giảm dung lượng bộ nhớ là sử dụng $ project . $ project cho phép bạn sắp xếp lại các tài liệu trong đường dẫn để bạn chỉ trả lại các phần tử mà bạn quan tâm.

Để sử dụng ví dụ của bạn,

{
  someInfo: "blah blah blah",
  answers: [
    {
      email: "[email protected]",
      values: [
        {value: 1, label: "test1"},
        {value: 2, label: "test2"}    
      ]
    },
    {
      email: "[email protected]",
      values: [
        {value: 6, label: "test1"},
        {value: 1, label: "test2"}    
      ]
    }
  ]
}

Với

db.collection.aggregate([{ $match: { <element>: <value> }}, { $project: { _id: 0, answers: 1}}])

sẽ xóa someInfo và các thuộc tính khác mà bạn có thể không quan tâm. Sau đó, bạn có thể $ project một lần nữa sau khi giải nén ...

db.collection.aggregate([
   { $match: { <element>: <value> }},
   { $project: { _id: 0, answers: 1}},
   { $unwind: "$answers"},
   { $unwind: "$answers.tags"},
   { $project: { e: "$answers.email", v: "$answers.values"}}
])

sẽ trả về các kết quả khá nhỏ gọn như:

{ e: "[email protected]", v: { value: 1, label: "test1" } }
{ e: "[email protected]", v: { value: 2, label: "test2" } }
{ e: "[email protected]", v: { value: 6, label: "test1" } }
{ e: "[email protected]", v: { value: 1, label: "test2" } }

Mặc dù các tên thuộc tính một chữ cái làm giảm khả năng đọc của con người, nhưng nó làm giảm kích thước của dữ liệu bị thổi phồng bởi các tên thuộc tính lặp lại dài dòng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cách kiểm tra xem tài liệu có được cập nhật hoặc chèn vào MongoDB hay không

  2. Phiên mongodb Express-session không tồn tại

  3. Bộ lọc tìm kiếm văn bản MongoDB theo nhiều trường

  4. Làm thế nào để so sánh dữ liệu Morphia, Mongo4j và Spring cho MongoDB?

  5. Làm cách nào để liệt kê tất cả cơ sở dữ liệu MongoDB trong Node.js?