Diğer cevaplarda belirtildiği gibi MongoDB izin vermiyor $
alan adlarındaki kısıtlamalar.
nedeniyle harita anahtarları olarak veya karakterlere . Ancak Dolar İşareti Operatöründen Kaçmak bölümünde belirtildiği gibi bu kısıtlama, bu tür anahtarlara sahip belgeleri eklemenizi engellemez , yalnızca bunları güncellemenizi veya sorgulamanızı engeller.
Basitçe veya .
ile değiştirme sorunu ( bu sayfada başka bir yerde belirtildiği gibi), kullanıcı yasal olarak anahtarı saklamak istediğinde veya ?[dot]
U+FF0E
[dot]
U+FF0E
Fantom'un afMorphia sürücüsünün benimsediği bir yaklaşım, Java'nınkine benzer unicode kaçış dizilerini kullanmak, ancak önce kaçış karakterinin kaçmasını sağlamaktır. Temelde, aşağıdaki dize değişiklikleri yapılır (*):
\ --> \\
$ --> \u0024
. --> \u002e
Harita tuşları sonradan okumak kaldıklarında, bir ters yedek yapıldığı gelen MongoDB.
Veya Fantom kodunda:
Str encodeKey(Str key) {
return key.replace("\\", "\\\\").replace("\$", "\\u0024").replace(".", "\\u002e")
}
Str decodeKey(Str key) {
return key.replace("\\u002e", ".").replace("\\u0024", "\$").replace("\\\\", "\\")
}
Bir kullanıcının bu tür dönüşümlerden haberdar olması gereken tek zaman, bu tür anahtarlar için sorgular oluştururken.
dotted.property.names
Yapılandırma amacıyla veritabanlarında depolamanın yaygın olduğu düşünüldüğünde, bu yaklaşımın tüm bu tür harita anahtarlarını yasaklamaktan daha tercih edildiğine inanıyorum.
(*) afMorphia , Java'da Unicode kaçış sözdiziminde belirtildiği gibi tam / uygun unicode kaçış kurallarını gerçekleştirir, ancak açıklanan değiştirme dizisi de aynı şekilde çalışır.