mongo 셸 스크립트는 "use" 를 포함하지 못하게 합니다.
윈도우즈 XP 시스템의 32비트 mongo 2.0.1
//script filename: test.js (one line shell script file to store a person)
db.cTest.save({Name: "Fred", Age:21});
다음 2개의 셸 명령을 입력하여 데이터베이스 dbTest에 대해 실행합니다.
> use dbTest
switched to dbTest
> load("test.js")
지금까지, 좋아요.
그러나 스크립트에 "사용" 문을 포함하려고 하면 실패합니다.
//script filename: test.js (including "use" statement)
use dbTest;
db.cTest.save({Name: "Fred", Age:21});
다음과 같은 오류 메시지와 함께 실패합니다.
> load("test.js")
SyntaxError: missing ; before statement
Mon Dec 19 11:56:31: Error: error loading js file temp.js (shell):1
test.js에 세미콜론을 추가하거나 제거하는 것은 문제가 되지 않는 것 같습니다.
그렇다면 몽고 쉘 스크립트에 "사용" 지침을 어떻게 넣습니까?
몽고 스크립트에서 사용할 수 있습니다.db.getSiblingDB('new_db_name')
새 데이터베이스의 참조를 가져옵니다.따라서 명령줄에서 데이터베이스 이름을 지정할 필요는 없습니다.사용할 수 있습니다.script.js
:
db = db.getSiblingDB('new_db_name');
print(db);
// the rest of your code for database "new_db_name"
그리고 이 스크립트의 출력은 다음과 같습니다.mongo script.js
):
MongoDB shell version: 2.2.2
connecting to: test
sag
http://www.mongodb.org/display/DOCS/Scripting+the+shell
dbname 사용
이 명령은 스크립트 모드에서는 작동하지 않습니다.대신 연결에 데이터베이스를 명시적으로 정의해야 합니다(위 예제의 /dbname).또는 스크립트 내에 다음과 같은 연결을 만들 수도 마찬가지입니다.
db2 = connect("서버":27017/otherdbname")
음, "load('file.js')"와 "mongo file.js"가 실제로 대화형 mongo 셸과 동일한 스크립트 인터프리터를 사용하지 않는다는 것은 여전히 유감스러운 일입니다.mongo는 이미 이 정보를 알고 있기 때문에 스크립트에서 연결을 명시적으로 여는 것은 잠재적으로 DRY 원칙을 위반하는 것입니다.그러나 명령행에 파일의 이름을 전달하는 대신 파일을 mongo로 파이핑하는 것이 작동합니다.
mongo <file.js
언급URL : https://stackoverflow.com/questions/8565376/mongo-shell-script-wont-let-me-include-use-database
'programing' 카테고리의 다른 글
typescript express 서버에서 base64로 문자열을 디코딩/인코딩하는 방법 (0) | 2023.07.08 |
---|---|
Angular2 서비스에 예기치 않은 값이 있습니다.주석을 추가하십시오. (0) | 2023.07.08 |
가져오기 org.apache.poi.xssf를 확인할 수 없습니다. (0) | 2023.07.08 |
사전이 비어 있는지 확인하는 방법은? (0) | 2023.07.08 |
Excel VSTO에서 "응용 프로그램" 인터페이스를 인스턴스화할 수 있는 이유를 설명하십시오. (0) | 2023.07.08 |