#mongodb #nosql
#mongodb #nosql
Вопрос:
Каковы основы скриптов MongoDB?
Я думаю, что скрипт завершится на .js
, и мы запускаем его с помощью mongo try.js
Но если я поставлю
print(db.foo.find())
в try.js
и использовать mongo try.js
в нем будет сказано
MongoDB shell version: 1.6.1
connecting to: test
DBQuery: test.foo -> undefined
и если я использую интерактивную оболочку, набрав mongo
и введите
> db.foo.find()
{ "_id" : ObjectId("4c7a73428261000000003a7e"), "a" : 1 }
> print(db.foo.find())
DBQuery: test.foo -> undefined
{a : 1}
это было то, что я вставил ранее, используя db.foo.insert({a:1})
каковы правильные способы выполнения скриптов MongoDB и как печатать что-то вроде Ruby irb
или Python IDLE
? Спасибо. ( puts a.inspect
или p a
оба языка Ruby a
обычно могут распечатывать всю структуру a
(все имена переменных и значения в,,))
alert(db.foo.find())
и console.log(db.foo.find())
тоже не будет работать.
Комментарии:
1. Я обнаружил, что могу распечатывать данные, используя
printjson({hm:'yeah'})
ordb.foo.find().forEach(printjson)
, если не в командной оболочке2. Хотя уже косвенно указано ниже: Важным уроком для меня было то, что передача файла в MongoDB, например
mongo < script.txt
, позволяет использовать команды MongoDB-shell и отличается отmongo script.js
Ответ №1:
Внешние файлы сценариев выполняются вне контекста командной строки.
db.foo.find()
Команда database возвращает только курсор; сама по себе она ничего не печатает. Когда команда выдается из командной строки, оболочка выполняет итерацию курсора и печатает результаты. Когда команда выполняется из внешнего файла скрипта, ничего не печатается.
print()
Команда распечатает строковое представление объекта. В вашем случае это курсор:
> print(db.foo.find())
DBQuery: test.foo -> undefined
Если вам нужно распечатать результаты запроса, вам придется перемещать курсор в файле вашего скрипта и печатать каждый результат, аналогично тому, что делает оболочка:
function printResult (r) {
print(tojson(r))
}
db.foo.find().forEach(printResult)
Ответ №2:
Существует встроенная функция для печати объекта json.
Просто добавьте .forEach(printjson)
в конец вызова функции.
db.foo.find().forEach(printjson);
Ответ №3:
оболочка Linux или Mac:
user@comp:$ mongo < script.js