ключ '$ name' не должен начинаться с '$' в PyMongo [duplicate]

Другой вариант, предложенный здесь здесь , устанавливает стиль изображения как style="display: block;"

22
задан Blacksad 18 March 2012 в 18:27
поделиться

2 ответа

Вы можете использовать любой символ (UTF8) в имени поля, который не является особым (содержит «.» или начинается с «$»).

https://jira.mongodb.org/browse/SERVER-3229

https://stackoverflow.com/a/7976235/311220

Как правило, лучше придерживаться буквенных цифр в нижнем регистре с подчеркиванием.

36
ответ дан Community 19 August 2018 в 11:38
поделиться
  • 1
    Как насчет характеристик продукта? Разве это не упростило бы дизайн, если бы имена полей были фактическим описанием спецификации? (например, 'Screen Size': '26 inches') – Dor 15 March 2013 в 14:17
  • 2
    Не обязательно, @Dor - вы хотите иметь небольшую гибкость между вашим пользовательским интерфейсом и вашей базой данных (ничего не так непостоянно, как клиент: «Подождите, я хочу сказать« Размер дисплея », а не« Размер экрана »и«) , И, конечно же, есть целая интернационализация части головоломки, требующая также развязки. Кстати, когда Acorn говорит «любой UTF8», который включает в себя пробелы, так что вы отлично там, если хотите. – Erwin Wessels 11 June 2013 в 09:17
  • 3
    Как он будет обрабатывать слова с верблюжьей шкурой, такие как userDetails? Действительно ли это? – Justin John 17 July 2013 в 05:14
  • 4
    @Dor представляет конкретный пример счетчика к утверждению, что «Обычно лучше придерживаться буквенного алфавита в нижнем регистре с подчеркиванием». На уровне базы данных трудно сформулировать такие претензии, не понимая, что такое прецедент. В базе данных документов, такой как MongoDB, существует много потенциальных прецедентов, в которых можно было бы предположить использование ключей, отличных от определяемых программистом идентификаторов, и в этом случае приятно знать, какие символы могут быть разрешены или запрещены. – Jason R. Coombs 10 July 2014 в 22:14
  • 5
    & Quot; / & Quot; это то, что я не рекомендую, потому что у mongodump и mongorestore будут проблемы с ним jira.mongodb.org/browse/TOOLS-1163 – Mika 24 March 2017 в 00:16

Кое-что еще, что нужно обратить внимание, это тот факт, что вы можете создать имя свойства, называемое «запрос», но затем использовать на нем операторы запросов, что затрудняет выполнение большого количества запросов.

Пример :

Вставить документ с именем с именем

db.coll.insert({ query: 'foo' });

Работа с запросом на равенство:

db.coll.findOne({ query: 'foo' });    

Не равно ($ ne):

db.coll.findOne({ query: { $ne: 'bar' } });
1
ответ дан Dave 19 August 2018 в 11:38
поделиться
  • 1
    Хорошая точка зрения. Но вы можете сделать этот запрос как db.coll.findOne({query: {query: {$ne: 'bar'}}}). Так что это не невозможно, но это неудобно. – JohnnyHK 1 September 2015 в 17:35
  • 2
    Спасибо, я не понимал, что это невозможно, пока я не разместил это. Определенно более неудобно. – Dave 2 September 2015 в 17:54
  • 3
    Начиная с версии 3.2 (выпущено в конце 2015 года) это было исправлено. – Asya Kamsky 18 October 2016 в 15:01
Другие вопросы по тегам:

Похожие вопросы: