Подтвердить что ты не робот

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

В чем основы скриптов MongoDB?

Я думаю, что script закончится с .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 puts a.inspect или p a могут одновременно печатать всю структуру a (все имена переменных и значения в a))

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

4b9b3361

Ответ 1

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

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

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

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

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

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

db.foo.find().forEach(printResult)

Ответ 2

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

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

db.foo.find().forEach(printjson);