Một "đối tượng GridFS" trong ngữ cảnh này có nghĩa là tên của đối tượng được lưu trữ trong các bộ sưu tập GridFS. Sự khác biệt có thể được giải thích tốt nhất bằng --local
trên trang hướng dẫn mongofiles.
Những gì bạn cần xem xét ở đây là những gì bạn đã làm là gửi các mục có cùng tên tệp bằng cách sử dụng tiện ích mongofiles. Như đã lưu ý trong trang hướng dẫn sử dụng cho tiện ích đó, hành vi mặc định cho put
(xem lệnh
) tùy chọn là tạo một mục mới trong cửa hàng. Điều này có thể được ghi đè bằng --replace
để mọi nội dung hiện có được tìm thấy và ghi đè lên nội dung mới bạn đã tạo.
Tóm lại, bất kể các tệp có chứa nội dung khác nhau hay không, bạn đã tạo ra một số thứ có cùng "Tên đối tượng". Theo như tiện ích mongofiles có liên quan, nó chỉ biết cách tìm nạp theo "Tên đối tượng", vì vậy nó sẽ chỉ truy xuất cái đầu tiên mà nó tìm thấy, theo các quy tắc của nó.
Giờ đây, trong hầu hết các triển khai API của GridFS, get
thực tế các hoạt động thường được thực hiện bởi _id
. Mọi "Đối tượng" bạn đã tạo theo cách này vẫn có _id
duy nhất của riêng nó giá trị, vì vậy khi điều này được áp dụng thì bạn có thể nhận được "Đối tượng" mà bạn muốn.
Một số triển khai API thêm các phương thức loại truy vấn bổ sung để tìm theo "tên tệp" hoặc thông tin siêu dữ liệu khác. Nhưng hầu hết họ không bận tâm vì đây thực sự chỉ là tiêu chuẩn .find()
hoặc .findOne()
hoạt động trên bất kỳ bộ sưu tập nào giữ siêu dữ liệu nội dung và tham chiếu (fs.files theo mặc định). Điều này cung cấp nhiều cách hợp lý hơn để "tìm" một đối tượng cụ thể và phát hành _id
giá trị thông qua get
giao diện của API đó.
Vì vậy, trong khi mongofiles
là một tiện ích tuyệt vời để thực hiện các thao tác kiểu CRUD cơ bản từ dòng lệnh, nó chỉ đơn thuần là một tiện ích và không phải là phần triển khai chính của "cách thực hiện". Vì vậy, là một tiện ích, nó cung cấp một hình thức thiết lập và nhận đối tượng "tiện lợi", bằng cách sử dụng phần "tên tệp" của mã định danh Đối tượng.
Cũng cần lưu ý rằng bạn nên thực sự coi một cửa hàng GridFS giống như một hệ thống tệp và giữ "tên tệp" của bạn là duy nhất giống như được yêu cầu trong một hệ thống tệp.
Nhưng đối với mongofiles
tiện ích, "tên" là tất cả những gì bạn phải tiếp tục để truy xuất thông tin. Cố gắng không làm điều đó hoặc thực sự sử dụng API ngôn ngữ bạn đã chọn để thực hiện công việc.