Có một vài lựa chọn thay thế:
1. Thay thế dấu chấm bằng dấu gạch ngang.
Đây sẽ là cách tiếp cận yêu thích của tôi, vì nó giữ cho cấu trúc đủ rõ ràng.
Vì theo bạn, thì nó khá giống với việc chèn một lần, nên nó khá đơn giản để kiểm tra xem nó có phá vỡ gì không (tức là đã có cùng một khóa với dấu gạch ngang). Đối với các tình huống khác, thực hiện các kiểm tra đó theo chương trình yêu cầu viết một số mã, nhưng vẫn là một nhiệm vụ tương đối dễ dàng.
Tôi sẽ khuyên bạn nên chống lại cách tiếp cận này, vì nó sẽ dẫn đến những cơn đau đầu lớn . Để ai đó sử dụng JSON kết quả ở đâu đó trong mã cách xa MongoDB để đoán rằng một dấu chấm không thực sự là một dấu chấm là một cách tốt để lãng phí hàng tuần thời gian của một ai đó. Giữ các thủ thuật Unicode như vậy cho các tin tặc muốn lừa ai đó nghĩ rằng một nhân vật là một nhân vật khác.
3. Sử dụng BSON.
Vì bạn cho rằng bạn hầu như sẽ truy xuất toàn bộ tài liệu thay vì truy vấn các phần của nó, nên cách tiếp cận này không có nhược điểm lớn trong trường hợp của bạn . Mặc dù, bạn đã nói rằng, chủ yếu là, có nghĩa là đôi khi, bạn sẽ chỉ truy xuất các phần của tài liệu.
Nói chung, nhược điểm là bạn sẽ không thể tìm kiếm thông qua tài liệu hoặc chỉ tải một phần của tài liệu đó.
4. Sử dụng mã hóa tiêu chuẩn, chẳng hạn như Base64.
Chuyển đổi các khóa có vấn đề (hoặc tất cả các khóa, tùy thuộc vào tỷ lệ giữa các khóa có vấn đề và không có vấn đề) thành Base64 hoặc hexadecimal có thể là một giải pháp khả thi, với lợi ích là khá rõ ràng: hầu hết các nhà phát triển sẽ nhận ra các giá trị Base64 hoặc hexadecimal trong nháy mắt .
Hạn chế là dấu chân bộ nhớ tăng lên, cũng như sự cần thiết phải mã hóa và giải mã các phím khi sử dụng chúng.
Tôi đặc biệt khuyên bạn nên chống lại cách tiếp cận này, vì nó sẽ làm cho truy vấn dữ liệu trở nên mơ hồ và lãng phí hàng giờ hoặc hàng ngày để tìm hiểu tại sao một truy vấn cụ thể không làm những gì bạn tưởng tượng nên làm. Dot là một nhân vật dành riêng và kiểm tra ở đây để bảo vệ bạn; bằng cách yêu cầu MongoDB bỏ qua kiểm tra, bạn sẽ chỉ hoãn lại khoảnh khắc mà bạn sẽ phải giải quyết mâu thuẫn giữa cú pháp của MongoDB và ký tự dành riêng được sử dụng trong một khóa.