Điều này đi qua các loại bạn có thể lưu vào cơ sở dữ liệu và sử dụng cho các truy vấn trong trình điều khiển Perl. Nếu bạn đang sử dụng ngôn ngữ khác, vui lòng tham khảo tài liệu của ngôn ngữ đó (http. //api. mongodb. tổ chức) Show
Bạn phải truy vấn dữ liệu bằng đúng loạiVí dụ: hoàn toàn hợp lệ khi có một số bản ghi trong đó trường "foo" là 123 (số nguyên) và các bản ghi khác trong đó "foo" là "123" (chuỗi). Vì vậy, bạn phải truy vấn đúng loại. Nếu bạn lưu 5, bạn không thể truy vấn nó với 6. MongoDB nghiêm ngặt về các loạiNếu loại trường không rõ ràng và quan trọng đối với ứng dụng của bạn, bạn nên ghi lại những gì bạn muốn ứng dụng gửi đến cơ sở dữ liệu và chuyển đổi dữ liệu của bạn thành các loại đó trước khi gửi. Có một số trình ánh xạ tài liệu đối tượng sẽ thực thi một số loại nhất định cho các trường nhất định cho bạn Thông thường, bạn không nên lưu số dưới dạng chuỗi, vì chúng sẽ hoạt động giống như chuỗi (e. g. , truy vấn phạm vi sẽ không hoạt động chính xác) và dữ liệu sẽ chiếm nhiều dung lượng hơn. Nếu bạn đặt , trình điều khiển sẽ tự động chuyển đổi mọi thứ trông giống số thành số trước khi gửi vào cơ sở dữ liệu Các số là ngoại lệ duy nhất đối với việc gõ nghiêm ngặt. tất cả các loại số được lưu trữ bởi MongoDB (số nguyên 32 bit, số nguyên 64 bit, số dấu phẩy động 64 bit) sẽ khớp với nhau CÁC LOẠIsốTheo mặc định, các số có dấu thập phân sẽ được lưu dưới dạng số kép (64-bit) Nền tảng 32-bitCác số không có dấu thập phân sẽ được lưu dưới dạng số nguyên 32 bit. Để lưu một số dưới dạng số nguyên 64 bit, hãy sử dụng bigint
Trình điều khiển sẽ chết nếu bạn cố chèn một số vượt quá phạm vi 64 bit đã ký. -9.223.372.036.854.775.808 đến +9.223.372.036.854.775.807 Các số được lưu dưới dạng số nguyên 64 bit sẽ được giải mã thành gấp đôi Nền tảng 64-bitCác số không có dấu thập phân sẽ được lưu và trả về dưới dạng số nguyên 64 bit. Lưu ý rằng không có cách nào để lưu int 32 bit trên máy 64 bit Hãy nhớ rằng điều này có thể gây ra một số điều kỳ lạ nếu một số máy là 32-bit và những máy khác là 64-bit. Lấy ví dụ sau
Không có gì quyết liệt, nhưng tốt để nhận thức được Số nguyên 64 bit trong trình baoVỏ Mongo có một loại số. float 8 byte. Điều này có nghĩa là nó không phải lúc nào cũng biểu diễn chính xác một số nguyên 8 byte. Do đó, khi bạn hiển thị một số nguyên 64 bit trong trình bao, nó sẽ được bao bọc trong một đối tượng con cho biết đó có thể là một giá trị gần đúng. Chẳng hạn, nếu chúng ta chạy Perl này trên máy 64-bit
sau đó nhìn vào nó trong vỏ, chúng ta thấy
Điều này không có nghĩa là chúng tôi đã lưu số float, nó chỉ có nghĩa là giá trị float của số nguyên 64 bit có thể không chính xác Xử lý các số và chuỗi trong PerlPerl rất linh hoạt về việc thứ gì đó là số hay chuỗi. nó thường suy ra loại từ ngữ cảnh. Thật không may, trình điều khiển không có bất kỳ ngữ cảnh nào khi phải chọn cách tuần tự hóa một biến. Do đó, hành vi mặc định là xem xét nội quan các cờ được đặt trên biến đó và quyết định ý nghĩa của người dùng, thường bị ảnh hưởng bởi thao tác cuối cùng
Vì điều này, người dùng thường thấy rằng họ kết thúc với nhiều chuỗi hơn họ muốn trong cơ sở dữ liệu của họ Nếu bạn muốn mọi thứ trông giống như một số được lưu dưới dạng một số, hãy đặt tùy chọn
Điều này sẽ gửi bất cứ thứ gì "trông giống" một số dưới dạng một số. Nó có thể nhận ra bất cứ thứ gì mà Scalar. Hàm 7 của Util có thể nhận raMặt khác, đôi khi có dữ liệu giống số nhưng nên lưu dưới dạng chuỗi. Ví dụ: giả sử chúng tôi đang lưu mã zip. Nếu chúng ta thường muốn chuyển đổi chuỗi thành số, chúng ta có thể có một cái gì đó như ________số 8Để buộc một "số" được lưu dưới dạng một chuỗi có bật tính năng chuyển đổi số tích cực, hãy nhập chuỗi dưới dạng loại 8 0DâyTất cả các chuỗi phải là UTF-8 hợp lệ để được gửi đến cơ sở dữ liệu. Nếu một chuỗi không hợp lệ, nó sẽ không được lưu. Nếu bạn cần lưu một chuỗi không phải UTF-8, bạn có thể lưu nó dưới dạng blob nhị phân (xem phần Dữ liệu nhị phân bên dưới) Tất cả các chuỗi được trả về từ cơ sở dữ liệu đều được đặt cờ UTF-8 Thật không may, do sự kỳ lạ của Perl, UTF-8 không đẹp lắm. Ví dụ: giả sử chúng ta có chuỗi UTF-8 1Bây giờ, hãy in nó 2Bạn có thể thấy trong đầu ra 3Đáng yêu phải không? . Để làm cho nó "đẹp", có một vài lựa chọn 0Điều này vô tình xóa cờ UTF-8 Bạn cũng có thể chỉ cần chạy 1và sau đó chuỗi (và tất cả các chuỗi UTF-8 trong tương lai) sẽ in "chính xác. " Bạn cũng có thể tắt 9 và cờ UTF-8 sẽ không được đặt khi chuỗi được giải mã 2MảngMảng phải được lưu dưới dạng tham chiếu mảng ( 0, không phải 1)Tài liệu nhúngTài liệu nhúng có cùng dạng với tài liệu cấp cao nhất. tham chiếu băm hoặc Tie. IxHash ngàyGói DateTime có thể được sử dụng chèn và truy vấn ngày tháng. Ngày được lưu trữ trong cơ sở dữ liệu sẽ được trả về dưới dạng phiên bản của DateTime Một ví dụ về lưu trữ và truy xuất ngày tháng 3Một ví dụ về truy vấn cho một phạm vi ngày 4Cảnh báo. tạo các đối tượng Perl DateTime cực kỳ chậm. Cân nhắc lưu ngày dưới dạng số và chuyển đổi số thành DateTimes khi cần. Một trường DateTime duy nhất có thể làm cho quá trình giải tuần tự hóa chậm hơn tới 10 lần Ví dụ: bạn có thể sử dụng hàm thời gian để lưu trữ giây kể từ kỷ nguyên 5Điều này sẽ nhanh hơn để deserialize Biểu thức chính quySử dụng 2 để sử dụng biểu thức chính quy trong truy vấn 6Biểu thức chính quy sẽ khớp với các chuỗi được lưu trong cơ sở dữ liệu Bạn cũng có thể tự lưu và truy xuất các biểu thức chính quy 7Lưu ý cho Perl 5. 8 người dùng. cờ bị mất khi biểu thức chính quy được lấy từ cơ sở dữ liệu (điều này không ảnh hưởng đến truy vấn hoặc Perl 5. 10+) BooleansSử dụng gói boolean để nhận các giá trị boolean. 3 và 4 là những phần duy nhất của gói được sử dụng, hiện tạiMột ví dụ về chèn giá trị boolean 8Một ví dụ sử dụng giá trị boolean cho toán tử truy vấn (chỉ trả về tài liệu có trường tên tồn tại) 9Hầu hết thời gian, bạn chỉ có thể sử dụng 1 hoặc 0 thay vì 5 và 6, chẳng hạn như để chỉ định các trường sẽ trả lại. boolean là cách duy nhất để lưu boolean vào cơ sở dữ liệuTheo mặc định, các phép toán luận được trả về từ cơ sở dữ liệu dưới dạng số nguyên. Để trả về boolean dưới dạng boolean, hãy đặt 7 thành 1MongoDB. OID"OID" là viết tắt của "ID đối tượng" và là một id duy nhất được tự động thêm vào tài liệu nếu chúng chưa có trường 8 trước khi chúng được lưu vào cơ sở dữ liệu. Chúng là 12 byte được đảm bảo là duy nhất. Dạng mạnh của chúng là một chuỗi 24 ký tự gồm các chữ số thập lục phânĐể tạo một id duy nhất 0Để tạo một MongoDB. OID từ chuỗi thập lục phân 24 ký tự hiện có 1Dữ liệu nhị phânTheo mặc định, tất cả các chuỗi cơ sở dữ liệu là UTF8. Để lưu hình ảnh, tệp nhị phân và dữ liệu không phải UTF8 khác, bạn cần lưu trữ dưới dạng dữ liệu nhị phân. Có hai cách để làm điều này Tham chiếu chuỗiNói chung, bạn có thể chuyển chuỗi dưới dạng tham chiếu. Ví dụ 2Điều này sẽ lưu biến dưới dạng dữ liệu nhị phân, bỏ qua kiểm tra UTF8 Dữ liệu nhị phân có thể được khớp chính xác bởi cơ sở dữ liệu, vì vậy truy vấn này sẽ khớp với đối tượng chúng tôi đã chèn ở trên 3MongoDB. BSON. loại nhị phânBạn cũng có thể sử dụng MongoDB. BSON. lớp nhị phân. Điều này cho phép bạn bảo toàn kiểu con của dữ liệu của mình. Dữ liệu nhị phân trong MongoDB lưu trữ trường "loại", có thể là bất kỳ số nguyên nào trong khoảng từ 0 đến 255. Dữ liệu giống hệt nhau sẽ chỉ khớp nếu kiểu con giống nhau Perl sử dụng kiểu con mặc định của 9Trình điều khiển mặc định trả về dữ liệu nhị phân dưới dạng chuỗi, không phải phiên bản của MongoDB. BSON. Nhị phân (hoặc thậm chí tham chiếu chuỗi) vì lý do tương thích ngược. Nếu bạn cần dữ liệu nhị phân khứ hồi, hãy đặt cờ 0 4So sánh (e. g. , $gt, $lt) có thể không hoạt động như bạn mong đợi với dữ liệu nhị phân, vì vậy rất đáng để thử nghiệm MongoDB. Mã sốMongoDB. Mã được sử dụng để đại diện cho mã JavaScript và, tùy chọn, phạm vi. Để tạo một 5Hoặc, với phạm vi 6Cái nào sau đó sẽ trả về "xin chào, Fred" khi chạy MongoDB. MinKey 1 là "nhỏ hơn" bất kỳ giá trị nào khác thuộc bất kỳ loại nào. Điều này có thể hữu ích cho việc luôn trả lại một số tài liệu nhất định trước (hoặc cuối cùng) 1 không có phương thức, trường hoặc dạng chuỗi. Để tạo một cái, chỉ cần nói 7MongoDB. MaxKey 3 là "lớn hơn" bất kỳ giá trị nào khác thuộc bất kỳ loại nào. Điều này có thể hữu ích để luôn trả lại một số tài liệu cuối cùng (hoặc đầu tiên) 3 không có phương thức, trường hoặc dạng chuỗi. Để tạo một cái, chỉ cần nói 8MongoDB. dấu thời gian 9Dấu thời gian được sử dụng nội bộ bởi bản sao của MongoDB. Bạn có thể nhìn thấy chúng trong môi trường sống tự nhiên của chúng bằng cách truy vấn 5. Mỗi mục trông giống như 0Trong trình bao, dấu thời gian được hiển thị bằng mili giây, mặc dù chúng được lưu trữ dưới dạng giây. Vì vậy, để thể hiện tài liệu này trong Perl, chúng tôi sẽ làm 1Dấu thời gian không phải là ngày tháng. Bạn không nên sử dụng chúng trừ khi bạn đang làm điều gì đó ở cấp độ thấp với bản sao. Để lưu ngày hoặc giờ, hãy sử dụng một số hoặc DateTime TÁC GIẢ
Phần mềm này là Bản quyền (c) 2012 của 10gen, Inc Đây là phần mềm miễn phí, được cấp phép theo 21 Lỗi POD Đã gặp phải các lỗi sau khi phân tích cú pháp POD Xung quanh đường 174Ký tự không phải ASCII đã thấy trước =encoding in ''Åland'. Giả sử UTF-8 × Hướng dẫn cài đặt mô-đunĐể cài đặt MongoDB. Không đồng bộ, sao chép và dán lệnh thích hợp vào thiết bị đầu cuối của bạn cpanm 3vỏ CPAN 4Để biết thêm thông tin về cài đặt mô-đun, vui lòng truy cập hướng dẫn cài đặt mô-đun CPAN chi tiết Làm cách nào để chuyển đổi đối tượng thành chuỗi trong MongoDB?toString() — Hướng dẫn sử dụng MongoDB. . Tạo một ObjectId() mới và lưu trữ nó trong biến myObjectId Tạo một biểu diễn chuỗi của myObjectId bằng phương thức toString() Lưu trữ biểu diễn chuỗi trong biến myObjectIdString Làm cách nào để chuyển đổi int thành chuỗi trong MongoDB?forEach( function(x) { x. tên = x. tên. toNumber(). toString();
Làm cách nào để chuyển đổi UUID thành chuỗi trong MongoDB?UUID(). toString() sẽ cung cấp một chuỗi chứa UUID("00000000-0000-0000-0000-00000000000"). split('"') sẽ chia chuỗi, chia cho dấu ngoặc kép, thành một mảng, đó là ['UUID(', '00000000-0000-0000-0000-000000000000', ')'].
Làm cách nào để chuyển đổi kiểu dữ liệu trong MongoDB?Trong MongoDB, bạn có thể sử dụng toán tử đường ống tổng hợp $convert để chuyển đổi một giá trị thành một loại được chỉ định . Bạn có thể chuyển đổi bất kỳ biểu thức hợp lệ nào thành kép, chuỗi, ObjectId, boolean, Ngày, số nguyên, dài hoặc thập phân. Không phải tất cả các loại có thể được chuyển đổi sang bất kỳ loại nào khác. |