Основы скриптов MongoDB — Как

#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'}) or db.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