Основы скриптов 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())
тоже не будут работать.
Ответы
Ответ 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);
Ответ 3
linux или mac shell:
[email protected]:$ mongo < script.js