Próbuję zapisać słownik zawierający znak specjalny "." w kluczowej części do MongoDB. Błąd został przedstawiony poniżej, który wyraźnie stwierdza, że klucz nie może zawierać znaku specjalnego ".".MongoDB nie zezwala na używanie "." w kluczu
>>> import pymongo
>>> client = pymongo.MongoClient('localhost')
>>> db = client['malware']
>>> test = db['test']
>>> d = {'.aaa' : '.bbb'}
>>> test.insert(d)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/pymongo/collection.py", line 362, in insert
self.database.connection)
bson.errors.InvalidDocument: key '.aaa' must not contain '.'
Ale moje bieżące informacje zawierają "." w kluczowej części danych, którą muszę przechowywać w MongoDB. Aktualnie właśnie kasowałem "." ze stringa, inną opcją byłoby zastąpienie go znakiem "_" lub innym specjalnym znakiem.
Niemniej jednak wszystkie skutkują utratą informacji, ponieważ jeśli mam klucz ".aa" i klucz "aaa" i jeśli konwertuję "." do "", wtedy klucze są dokładnie takie same i tracę trochę informacji. Dlaczego Mongo nie pozwala mi zapisać ".aa" w DB?
Jakieś pomysły, jak podejść do problemu?
Dziękuję za powiadomienie mnie o tej opcji. Czy możesz krótko opisać, dlaczego Mongo nie pozwoli ci zapisać klucza za pomocą "." domyślnie i musisz to przesłonić, aby to zrobić? To dałoby kompletną odpowiedź z faktycznym wyjaśnieniem, dlaczego tak się dzieje, a następnie mogę przyjąć tę odpowiedź jako poprawną. Dzięki jeszcze raz. – eleanor
'insert()' jest przestarzałe, zastąpione 'insert_one()', które nie ma argumentu 'check_keys'. Ma argument "bypass_document_validation", ale nie ma tego samego efektu, nadal nie wstawi dokumentu, który ma kropkę w kluczu. –