#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 не примет его