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

Truy vấn MongoDB GridFS?

GridFS hoạt động bằng cách lưu trữ một số phần cho mỗi tệp. Bằng cách này, bạn có thể phân phối và lưu trữ các tệp rất lớn mà không cần phải lưu toàn bộ tệp trong RAM. Ngoài ra, điều này cho phép bạn lưu trữ các tệp lớn hơn kích thước tài liệu tối đa. Kích thước phân đoạn được đề xuất là 256kb.

Trường siêu dữ liệu tệp có thể được sử dụng để lưu trữ siêu dữ liệu bổ sung cho tệp cụ thể, có thể hiệu quả hơn việc lưu trữ siêu dữ liệu trong một tài liệu riêng biệt. Điều này phụ thuộc rất nhiều vào yêu cầu chính xác của bạn, nhưng trường siêu dữ liệu nói chung cung cấp rất nhiều tính linh hoạt. Hãy nhớ rằng một số siêu dữ liệu rõ ràng hơn đã là một phần của fs.files tài liệu, theo mặc định:

> db.fs.files.findOne();
{
    "_id" : ObjectId("4f9d4172b2ceac15506445e1"),
    "filename" : "2e117dc7f5ba434c90be29c767426c29",
    "length" : 486912,
    "chunkSize" : 262144,
    "uploadDate" : ISODate("2011-10-18T09:05:54.851Z"),
    "md5" : "4f31970165766913fdece5417f7fa4a8",
    "contentType" : "application/pdf"
}

Để thực sự đọc tệp từ GridFS, bạn sẽ phải tìm nạp tài liệu tệp từ fs.files và các phần từ fs.chunks . Cách hiệu quả nhất để làm điều đó là truyền trực tuyến tệp này tới từng đoạn mã của máy khách, vì vậy bạn không phải tải toàn bộ tệp trong RAM. Các khối chunks bộ sưu tập có cấu trúc sau:

> db.fs.chunks.findOne({}, {"data" :0});
{
    "_id" : ObjectId("4e9d4172b2ceac15506445e1"),
    "files_id" : ObjectId("4f9d4172b2ceac15506445e1"),
    "n" : 0, // this is the 0th chunk of the file
    "data" : /* loads of data */
}

Nếu bạn muốn sử dụng metadata trường fs.files cho các truy vấn của bạn, hãy đảm bảo rằng bạn hiểu ký hiệu dấu chấm, ví dụ:

> db.fs.files.find({"metadata.OwnerId": new ObjectId("..."), 
                    "metadata.ImageWidth" : 280});

cũng đảm bảo rằng các truy vấn của bạn có thể sử dụng chỉ mục bằng cách sử dụng explain() .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quản lý AWS:Cách tiết kiệm 30% chi phí lưu trữ MongoDB của bạn

  2. MongoDB $ sum và $ avg tài liệu phụ

  3. thứ tự sắp xếp mongodb trên _id

  4. Sao lưu và khôi phục MongoDB bằng MongoDump

  5. mongodb:chèn nếu không tồn tại