MongoのJavaScriptのスクリプトを実行します

Mongoのクライアントは、MongoDBのサービスと対話するための2つの方法があり、一つはモンゴシェルは1つが通常より多くして、シェル.mongo JavaScriptのスクリプトの実装である、ですが、JavaScriptのスクリプトはほとんどのプロジェクトでは、。いくつかの時間前に使用されていませんバッチ更新にいくつかのデータを書き込むことにより、JSスクリプトは、いくつかの要約を行います。

どのように実行する方法

  1. Mongoのホスト:ポート/データベース/dir/xxxx.js

例:モンゴのローカルホスト:27017 / hr_assistant index.js 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
  1. 上記のmongoクライアントから直接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

上記の2つの方法がスクリプトパスの問題に注意を払う必要があり、それはスクリプト内のコマンドを実行するのが最善であることに注意してくださいすべてのフォルダをモンゴ、心配、悩みを保存します。

モンゴシェルと異なるjsのスクリプト

mongoShellではJavaScriptシェルの簡易版である、あなたはjavascriptのコードを書くことは自由ですが、また、ユニークなオブジェクトとメソッドの多くは構築されたのMongoDBに属していますが、このような順序が必要とされるショーデータベース、ショーのコレクション、使用テストのようなスクリプトを使用することはできませんクライアントは、db.getCollectionNames()などの機能を提供し、次の表は、共通コマンドに対応する機能であります

コマンド 関数
ショーのDBS、ショーのデータベース db.adminCommand( 'listDatabases')
DBを使用します デシベル= db.getSiblingDB( 'DB')
ショーコレクション db.getCollectionsNames()
ユーザーの表示 db.getUsers()

一般関数JSのスクリプトで使用される2つあり、印刷()/ 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メソッドのmongoを使用することができますので、それは、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 })

おすすめ

転載: www.cnblogs.com/pandapeter/p/11294232.html