Khai báo kiểu dữ liệu buffer nhưng mongo lại lưu kiểu binary?

chào các bạn
mình khai báo kiểu buffer nhưng mongo lại lưu binary format, nguyên nhân do đâu ạ?
cảm ơn các bạn

MongoDB có phải là Node.js đâu mà có Buffer :V. Kiểu dữ liệu trong MongoDB gồm có:

Type Number Alias Notes
Double 1 “double”
String 2 “string”
Object 3 “object”
Array 4 “array”
Binary data 5 “binData”
Undefined 6 “undefined” Deprecated.
ObjectId 7 “objectId”
Boolean 8 “bool”
Date 9 “date”
Null 10 “null”
Regular Expression 11 “regex”
DBPointer 12 “dbPointer” Deprecated.
JavaScript 13 “javascript”
Symbol 14 “symbol” Deprecated.
JavaScript code with scope 15 “javascriptWithScope” Deprecated in MongoDB 4.4.
32-bit integer 16 “int”
Timestamp 17 “timestamp”
64-bit integer 18 “long”
Decimal128 19 “decimal” New in version 3.4.
Min key -1 “minKey”
Max key 127 “maxKey”

Cả Buffer của Node.js và Binary của Mongo đều dùng để lưu trữ dữ liệu nhị phân. Khi dùng Buffer thì thư viện Mongoose sẽ ngầm chuyển nó thành Binary của Mongo.

6 Likes

binary là kiểu dữ liệu chỉ gồm các số 0 và 1, vậy tại sao ở kia nó lại hiển thị chuỗi loằng ngoằng đó là do đâu ạ?

Tin học căn bản nhé bạn. Các số 0 và 1 được lưu trữ dưới dạng binary không phải là các ký tự gồm 0 và 1 như trong kiểu dữ liệu chuỗi string.

Cái này ngay nhập môn bạn đã học rồi, nếu quên đọc lại. Phải hiểu được các thứ: khái niệm, biểu diễn, hiển thị, bit là gì, byte là gì, bảng mã, encoding… Ví dụ như ký tự A thì trong máy tính sẽ lưu dạng nhị phân là bạn đổi số 65 thập phân thành binary 1000001. Điều đó không có nghĩa là bạn mở trình soạn thảo văn bản thô thông thường như Notepad ra bạn thấy chuỗi 1000001 <= hiểu như này là mất căn bản trầm trọng.

Nếu bạn sử dụng công cụ đọc file binary lên để chỉnh sửa kiểu file nhị phân (các phần mềm nhóm này được gọi là Hex editor) thì sẽ hiểu.

Còn tất nhiên, khi người ta truy vấn vào, vì 0, 1 là trạng thái mạch điện, máy tính phải biểu diễn bằng cái gì đó mà phần mềm, người lập trình có thể đọc được chứ, tức là phải dùng một bảng mã nào đó để biểu diễn các ký tự tương ứng với binary, những cái này không phải là ký tự “0”, ký tự “1” bạn nhé.

5 Likes

cảm ơn bạn đã cmt, cmt tuy dài nhưng ko cắt nghĩa mình hỏi lắm và cũng ko trả lời trực tiếp câu mình hỏi, máy tính lưu mã 2 bit 0 và 1, và file binary là file nhị phân tức là phải lưu số 0 và số 1 nếu không lưu bit 0 và 1 vậy sao nó gọi là binary file?, khi mà cái chữ loằng ngoằng kia nó thay thế số 0 và 1 tức file ý phải ánh xạ tới 1 bảng mã nào đó thì mới hiển thị ký tự loằng ngoằng đó được.
những cái này nhập môn mình chưa được học nhé,ko biết bạn đã học những cái này ở môn nào? mình chỉ học duy nhất từ Thầy ở lớp nói là ký tự A thì mã hóa của nó là 65. cái này mình tin ko phải ai cũng hiểu vấn đề, mình hỏi đây ko phải cho riêng mình, còn rất nhiều bạn khác cũng không hiểu.

Cái loằng ngoằng đó là base64 rất phổ biến và nổi tiếng. Còn vì sao lại hiển thị là base64, vì không phải kí tự dạng nhị phân nào cũng hiển thị được, nên chuyển về dạng tất cả đều hiển thị dưới dạng base64.
Ví dụ nhé: bạn có thể dùng base64 url (data uri) để hiển thị trực tiếp một nội dung từ thanh URL của trình duyệt, tất cả dữ liệu đều nằm trên thanh URL đó.
Chép dòng sau để lên thanh URL và nhấn enter xem.

data:image/png;base64,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
data:text/html;base64,PHNjcmlwdD5hbGVydCgnaGknKTs8L3NjcmlwdD4=
3 Likes

Đơn vị lưu trữ thông tin trên đĩa là byte chứ không phải bit bạn nhé. Túm lại là những cái học ở lớp là còn mỏng, học một tiết trên trường phải tự học ít nhất 2 tiết ở nhà để hiểu và mở rộng vấn đề. Còn thầy nói thì kệ thầy, không phải cái gì thầy nói cũng là đúng đắn. Mình đi học chỉ xem thầy là người giúp mình học, chứ không phải thầy là nguồn kiến thức theo kiểu sách giáo khoa.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?