Основы сценариев MongoDB - Как - PullRequest
23 голосов
/ 29 августа 2010

Каковы основы сценариев 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?Благодарю.(Ruby's puts a.inspect или p a может одновременно распечатать всю структуру a (все имена и значения переменных в a))

alert(db.foo.find()) и console.log(db.foo.find()) не будутработать либо.

Ответы [ 3 ]

39 голосов
/ 29 августа 2010

Внешние файлы сценариев выполняются вне контекста оболочки.

Команда базы данных db.foo.find() возвращает только курсор; он сам ничего не печатает . Когда команда запускается из оболочки, оболочка выполняет итерацию курсора и выводит результаты. Когда команда запускается из внешнего файла сценария, ничего не печатается.

Команда print() выведет строковое представление объекта. В вашем случае это курсор:

> print(db.foo.find())
DBQuery: test.foo -> undefined

Если вам нужно распечатать результаты запроса, вам придется перебрать курсор в файле сценария и распечатать каждый результат, аналогично тому, что делает оболочка:

function printResult (r) {
  print(tojson(r))
}

db.foo.find().forEach(printResult)
15 голосов
/ 06 декабря 2012

Есть встроенная функция для печати объекта json.

Просто добавьте .forEach(printjson) в конец вызова функции.

db.foo.find().forEach(printjson);
1 голос
/ 15 ноября 2014

оболочка Linux или Mac:

user@comp:$ mongo < script.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...