Именование переменных в интерактивной оболочке, mongodb

#mongodb

#mongodb

Вопрос:

У меня есть веб-приложение, которое принимает параметры, которые затем переходят к созданию коллекции в mongodb. В настоящее время я провожу некоторое тестирование и использую интерактивную оболочку, чтобы определить, правильны ли операции чтения и записи. Если я использую некоторый символ, все работает правильно. Когда я использую что-то с числами — или, я получаю сообщение об ошибке. например:

 > db.getCollectionNames();
[ "1", "2", "deviceslist", "system.indexes" ]
> db.1.find()
Sun Oct  9 22:58:22 SyntaxError: missing ; before statement (shell):1
>
  

Есть ли что-то, чего мне не хватает, или mongodb просто не принимает эти вещи??

Я пробовал комбинации

db.’1′.find() db.»1″.find()

и, похоже, ничего не работает.

Помогите, пожалуйста..

Ответ №1:

Вы должны иметь возможность получить доступ к коллекции следующим образом:

 db[1].find(); 
  

или

 db['1'].find();
  

но я не знаю, есть ли какие-либо негативные побочные эффекты при именовании коллекции подобным образом.

Комментарии:

1. > db.[1].find(); 9 октября 23:25:40 Ошибка синтаксиса: отсутствует имя после . operator (shell): 1 > db.[‘1’].find(); 9 октября 23:25:46 Ошибка синтаксиса: отсутствует имя после . operator (оболочка): 1 > db.[«1»].find(); Вс 9 октября 23:25:55 Ошибка синтаксиса: отсутствует имя после . operator (оболочка):1 >

2. все еще синтаксическая ошибка. Другой вариант — сделать так, чтобы пользователь мог называть его только определенным образом, что сложно..

3. у вас есть точка в вашей записи. это db[1], а не db.[1]

Ответ №2:

Нет ничего принципиально неправильного в том, чтобы присвоить коллекции числовое имя, за исключением того, что для синтаксического анализа JavaScript потребуется использовать обозначение в виде скобок, как было предложено в ответе Харальда.

db.one.find() // нет проблем

db[‘1’].find() // не удается ввести db.1.find(), синтаксический анализ JavaScript не примет его