몽고 클라이언트가 MongoDB의 서비스와 상호 작용하는 두 가지 방법이있다, 하나는 몽고의 쉘은 하나가 일반적으로 더와 함께, 쉘 .mongo 자바 스크립트의 구현이지만, 자바 스크립트 스크립트는 거의 프로젝트에서. 몇 시간 전 사용되지 않습니다 일괄 업데이트를 일부 데이터를 작성하여 JS 스크립트는 일부 요약을한다.
어떻게 수행하는 방법
- 몽고 호스트 : 포트 / 데이터베이스 /dir/xxxx.js
예 : 몽고의 로컬 호스트 :하는 index.js에서 27,017 / hr_assistant하는 index.js 이야기가 인사하고 무엇을 현재 데이터베이스를 인쇄하여 MongoDB
print('hello mongodb')
// 打印连接之后的数据库
print(db);
결과 :
MongoDB shell version v4.0.11
connecting to: mongodb://localhost:27017/hr_assistant?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("3e0c8e42-57d5-429d-a00d-bad97ec95d73") }
MongoDB server version: 4.0.11
hello mongodb
hr_assistant
- 위의 몽고 클라이언트를 통해 직접 JS 스크립트를 수행하는 것입니다, 당신은 또한 스크립트를로드하기 위해 클라이언트 명령 행 상호 작용을 입력 부하 기능을 사용할 수 있습니다
예 :
// 进入客户端
pan@ubuntu18:~/disk/panyanan/blog/mongodb$ mongo localhost:27017/hr_assistant
MongoDB shell version v4.0.11
connecting to: mongodb://127.0.0.1:27017/
// load脚本文件
> load('index.js')
hello mongodb
hr_assistant
true
위의 두 가지 방법은 스크립트 경로 문제에주의를 지불 할 필요가 있습니다, 그것은 스크립트가 모든 폴더를 몽고에 수고를 걱정, 명령을 실행하는 것이 가장 좋습니다.
몽고 쉘과 다른 JS 스크립트
mongoShell는 자바 스크립트 쉘의 단순화 된 버전입니다, 당신은 자바 스크립트 코드를 작성 자유롭게, 또한 고유의 목적과 방법이 많이 내장 MongoDB에 속해 있지만, 이러한 순서가 필요 쇼 데이터베이스, 쇼 컬렉션을 사용 테스트와 같은 스크립트를 사용할 수 없습니다 클라이언트는 db.getCollectionNames () 등의 기능을 제공하며, 다음 표는 공통 명령에 대응하는 함수
명령 | 기능 |
---|---|
쇼 DBS, 쇼 데이터베이스 | db.adminCommand ( 'listDatabases') |
사용 DB | db.getSiblingDB DB = ( 'DB') |
쇼 컬렉션 | db.getCollectionsNames () |
사용자 표시 | db.getUsers () |
공통 기능 JS 스크립트에 사용되는 두 가지가 있으며, 인쇄 () / printjson () 파라미터는 표준 출력으로 인쇄 될 수있다.
예하는 index.js :
// 因为是--nodb 形式启动的mongo客户端 所以新建一个连接
const conn = new Mongo('localhost:27017');
print(`连接: ${conn}`)
let db = conn.getDB('hr_assistant');
print(`当前数据库:${db}`);
const dbs = db.adminCommand('listDatabases');
print('显示所有的数据库:')
printjson(dbs);
const collections = db.getCollectionNames();
print(`${db}中的collections:`);
printjson(collections);
db = db.getSiblingDB('test');
print(`切换数据库为${db}`);
결과 :
pan@ubuntu18:~/disk/panyanan/blog/mongodb$ mongo --nodb index.js
MongoDB shell version v4.0.11
连接: connection to localhost:27017
当前数据库:hr_assistant
显示所有的数据库:
{
"databases" : [
{
"name" : "admin",
"sizeOnDisk" : 32768,
"empty" : false
},
{
"name" : "config",
"sizeOnDisk" : 49152,
"empty" : false
},
{
"name" : "hr_assistant",
"sizeOnDisk" : 98873344,
"empty" : false
},
{
"name" : "local",
"sizeOnDisk" : 73728,
"empty" : false
}
],
"totalSize" : 99028992,
"ok" : 1
}
hr_assistant中的collections:
[
"hr_business_call_records",
"hr_business_info_collection",
"hr_business_info_follow",
"hr_business_info_interviewed",
"hr_business_info_meeting",
"hr_business_info_planned",
"hr_business_info_user",
"hr_business_resume_assessment",
"hr_business_resume_basic_work",
"hr_business_resume_basiceducation",
"hr_business_resume_basichealth",
"hr_business_resume_basicinfo",
"hr_business_resume_head_portrait",
"hr_business_resume_jobobjective",
"hr_business_resume_percentage",
"hr_business_resume_workexp",
"hr_business_sign_list",
"hr_business_signed_result"
]
切换数据库为test
해피 연주
당신은 JS 파일 JS에서 클라이언트가 제공 플러스 내장 객체 / 배열 방법 모든 CRUD 방법 몽고를 사용할 수 있기 때문에, 그것의 JS 파일 curdBoy 될 수 있습니다 JS 스크립트를 어떻게 실행하고 mongoshell의 차이를 알아보기 이. 단순히 더 강력
다음은 간단한 예입니다
const conn = new Mongo('localhost:27017');
const db = conn.getDB('test');
// 向emp集合中插入一些记录
let emps =[
{
ename: 'Smith',
deptno: 20,
job: 'salesman',
mgr: '',
sal: 800,
},
{
ename: 'Peter',
deptno: 30,
job: 'manager',
mgr: '',
sal: 1000,
},
{
ename: 'Jack',
deptno: 40,
job: 'president',
mgr: '',
sal: 3000,
},
{
ename: 'Rose',
deptno: 50,
job: 'analyst',
mgr: '',
sal: 1500,
},
]
// 批量插入
let result = db.emps.insert(emps);
print(`批量插入一写员工`)
print(result);
// 获取jack
let jack = db.emps.findOne({ename: 'Jack'});
print(`获取jack:`)
printjson(jack)
// 调整jack的薪资为5000
result = db.emps.update({_id: jack._id}, {$set: {sal: 5000}})
jack = db.emps.findOne({ename: 'Jack'});
// 更新薪资后的jack
print('更新薪资后的jack:')
printjson(jack)
// 获取所有的员工
emps = db.emps.find({});
print('获取所有的员工:');
// 更新所有员工的领导为jordan
emps.forEach(function(emp) {
printjson(emp);
emp.mgr = 'Jordan';
db.emps.save(emp)
});
emps = db.emps.find({});
print('更新所有员工的领导为jordan');
while(emps.hasNext()) {
printjson(emps.next())
}
result = db.emps.remove({});
print(`删除员工:: ${result}`);
영업 실적
pan@ubuntu18:~/disk/panyanan/blog/mongodb$ mongo --nodb curd.js
MongoDB shell version v4.0.11
批量插入一写员工
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 4,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
获取jack:
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6c"),
"ename" : "Jack",
"deptno" : 40,
"job" : "president",
"mgr" : "",
"sal" : 3000
}
更新薪资后的jack:
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6c"),
"ename" : "Jack",
"deptno" : 40,
"job" : "president",
"mgr" : "",
"sal" : 5000
}
获取所有的员工:
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6a"),
"ename" : "Smith",
"deptno" : 20,
"job" : "salesman",
"mgr" : "",
"sal" : 800
}
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6b"),
"ename" : "Peter",
"deptno" : 30,
"job" : "manager",
"mgr" : "",
"sal" : 1000
}
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6c"),
"ename" : "Jack",
"deptno" : 40,
"job" : "president",
"mgr" : "",
"sal" : 5000
}
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6d"),
"ename" : "Rose",
"deptno" : 50,
"job" : "analyst",
"mgr" : "",
"sal" : 1500
}
更新所有员工的领导为jordan
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6a"),
"ename" : "Smith",
"deptno" : 20,
"job" : "salesman",
"mgr" : "Jordan",
"sal" : 800
}
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6b"),
"ename" : "Peter",
"deptno" : 30,
"job" : "manager",
"mgr" : "Jordan",
"sal" : 1000
}
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6c"),
"ename" : "Jack",
"deptno" : 40,
"job" : "president",
"mgr" : "Jordan",
"sal" : 5000
}
{
"_id" : ObjectId("5d44fdd70998b36ed6983e6d"),
"ename" : "Rose",
"deptno" : 50,
"job" : "analyst",
"mgr" : "Jordan",
"sal" : 1500
}
删除员工:: WriteResult({ "nRemoved" : 4 })