Как выполнить команды mon go через скрипты оболочки? (у меня не работает) - PullRequest
1 голос
/ 20 февраля 2020

Я пытаюсь использовать сценарии js в оболочке mon go. Я читаю книгу на топи c. Я пробовал несколько вариантов, таких как открытие cmd в указанном c месте на моем компьютере. Я нашел здесь вопрос «Как выполнять команды mon go с помощью сценариев оболочки?», Но мне кажется, что ничего не работает. Мой mon go работает нормально, и я могу ввести mon go, просто набрав mon go в cmd. Однако он не может найти файлы js. Я использую Windows; у кого-нибудь есть идея, что может происходить под капотом?

Пример после:

mongo  demo.js

2020-02-20T11:03:33.098-0300 E  -        [main] file [demo.js] doesn't exist
2020-02-20T11:03:33.098-0300 F  -        [main] failed to load: demo.js
2020-02-20T11:03:33.098-0300 E  -        [main] exiting with code -3

1 Ответ

0 голосов
/ 20 февраля 2020

Создайте файл my_script.js с помощью одной команды:

db.testColl.insertOne( { a: "hello" } )

Поместите файл скрипта в текущий каталог.


1. Запустите JS Сценарий из командной строки ОС:

Из командной строки ОС сделайте следующее:

> mongo localhost/testDB my_script.js

После запуска вышеуказанной команды вы увидите следующие результаты ( аналогично, в зависимости от версии MongoDB и операционной системы (в данном случае Windows):

MongoDB shell version v4.2.3
connecting to: mongodb://localhost:27017/testdb?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("456b350f-668f-4389-9901-7c456e2c50fe") }
MongoDB server version: 4.2.3


Теперь из оболочки Mon go (т. е. do mongo, а затем из приглашения mon go):

mongo > use testDB
mongo > show collections

Вы увидите список testColl.

mongo > db.testColl.find()
{ "_id" : ObjectId("5e4ea0d05816162b300b0346"), "a" : "hello" }

Это документ, созданный в база данных testDB и коллекция testColl согласно команде в my_script.js.


2. Выполнить JS Скрипт из пн go Оболочка:

Также вы можете запустить my_script.js из Пн go Оболочка .

mongo > load("my_script.js")
true
mongo > db.test.find()
{ "_id" : ObjectId("5e4ea0d05816162b300b0346"), "a" : "hello" }
{ "_id" : ObjectId("5e4ea10f276cde8fc5fedec5"), "a" : "hello" }

Смотрите, есть два документа с разными значениями поля _id.

ПРИМЕЧАНИЕ: Я думаю, вы можете запустить только некоторые команды из файла .js.


3. Другой пример:

Создайте файл JS с именем script2.js со следующим содержимым:

db.test.find().forEach(printjson)

Обратите внимание, что метод оболочки printjson печатает документ на выходе оболочки .

mongo > load("script2.js")
{ "_id" : ObjectId("5e4ea0d05816162b300b0346"), "a" : "hello" }
{ "_id" : ObjectId("5e4ea10f276cde8fc5fedec5"), "a" : "hello" }



Рекомендации:
...