mongosh の児云議な荷恬をまとめました

n-ozawan

峻さん、こんにちは。晦永蝕kグル`プの稼-看噛温敬温稼です。
書晩は秀忽芝廷晩です。晩云がいつ秀忽したのか音苧なため、晩云の秀忽は兜旗爺司である舞冷爺司が軸了された晩としていますが、その晩も晩云慕射の芝墮から容協したものであり、僥宝議に鳩協した晩ではありません。その來嵎から、秀忽芝廷晩は忽酎の廝晩の嶄で率匯屓綜で協められています。

云籾です。
馨看稼乙看壊鞄は珂看稼乙看禽京を荷恬するためのツ`ルで、いたるところでお弊三になることでしょう。書指はそんな馨看稼乙看壊鞄の児云議な荷恬をまとめてみました。

児云議なmongosh の荷恬

デ`タベ`スの匯Eを燕幣する

デ`タベ`スの匯Eを燕幣します。

show dbs

デ`タベ`スを峺協する

デ`タベ`スを峺協します。デ`タベ`スを峺協せずに俊Aした魁栽はtestが聞われます。峺協したデ`タベ`スが贋壓しない魁栽は徭強で恬られます。

use hoge

デ`タベ`スを茅する

デ`タベ`スを茅するには、茅したいデ`タベ`スを峺協してから茅コマンドをg佩します。

use hoge
db.dropDatabase()

コレクションの匯Eを燕幣する

コレクションの匯Eを燕幣します。

show collections

コレクションを茅する

蒙協のコレクションを茅します。

db.hoge.drop()

コレクションにvして荷恬したい魁栽は、糸恢.距コレクション兆姶.距荷恬姶という更猟をとります。なので、コレクションを茅した魁栽は、糸恢.距茅したいコレクション兆姶.糸姻看沿()となります。この更猟はこの朔のドキュメント荷恬でも揖じです。

ドキュメントを碧する

涙訳周でドキュメントを碧します。

db.collection.find()

碧訳周を峺協したい魁栽は、及1哈方に訳周を峺協します。

db.collection.find({orderId: 204})                // orderIdが204のドキュメントを碧
db.collection.find({orderId: 204, prodId: 103})   // orderIdが204、かつ、prodIdが103のドキュメントを碧
db.collection.find({orderId: {$gte: 200}})        // orderIdが200參貧のドキュメントを碧
db.collection.find({$and: [
  {orderId: {$gte: 200}}, {orderId: {$lte: 300}}  // orderIdが200參貧300參和のドキュメントを碧
]})
db.collection.find({$or: [
  {orderId: 204}, {orderId: 205}                  // orderIdが204、もしくは、orderIdが205のドキュメントを碧
]})

碧するドキュメントのフィ`ルドを淑りたい魁栽は、及2哈方に訳周を峺協します。

db.collection.find({}, {_id: 0, orderId: 1})  // orderIdのみを燕幣する

Mongo DB では_idは匯吭キ`で蒙歩なフィ`ルドとなっており、ドキュメントに駅ず贋壓します。蒙に峺協が涙い魁栽は駅ず燕幣されますので、_id: 0を峺協することで掲燕幣にします。なお、及1哈方の{}は涙訳周で畠てのドキュメントを碧します。

ドキュメントを携襪垢

ドキュメントを携襪垢襯灰泪鵐匹錬欧弔△蠅泙后

db.collection.insertOne(
  {orderId: 317, prodId: 102}   // 1周携
)
db.collection.insertMany([
  {orderId: 317, prodId: 102},  // }方周携
  {orderId: 317, prodId: 102}
])

db.collection.insertOne()は1周携襪如db.collection.insertMany()は鹸方周携襪任后R方がオブジェクトと塘双で呟なるので廣吭が駅勣です。また、枠ほど峰べた宥り、_idは蒙歩なフィ`ルドですので、貧芝のように峺協しなければ覆返に原嚥されます。

ドキュメントを厚仟する

ドキュメントを厚仟するコマンドも2つあります。

db.collection.updateOne({orderId: 209}, {$set: {prodId:105}})   // 1周厚仟
db.collection.updateMany({orderId: 209}, {$set: {prodId:105}})  // }方周厚仟

db.collection.updateOne()は1周厚仟で、db.collection.updateMany()は鹸方周厚仟です。哈方はどちらも揖じで、及1哈方には厚仟鵑量周を峺協し、及2哈方には厚仟坪否を峺協します。もし、1周厚仟であるdb.collection.updateOne()の麑周で鹸方周のドキュメントがマッチした魁栽、どれか1つだけが厚仟されます。

及2哈方には厚仟處麻塀$setのところを峺協します。$setはフィ`ルドの厚仟を吭龍します。もしフィ`ルドが涙ければ弖紗します。麿にも、フィ`ルドを茅する$unsetや、フィ`ルド兆を筝する$renameなどがあります。

db.collection.updateOne({orderId: 209}, {$set: {prodId:105}})          // prodIdを105に筝
db.collection.updateOne({orderId: 209}, {$unset: {prodId:1}})          // prodIdを茅
db.collection.updateOne({orderId: 209}, {$rename: {prodId:"hogeId"}})  // prodIdをhogeIdに兆念筝

ドキュメントを茅する

ドキュメントを茅するコマンドも2つあります。

db.collection.deleteOne({orderId: 209})    // 1周茅
db.collection.deleteMany({orderId: 209})   // }方周茅

db.collection.deleteOne()は1周茅で、db.collection.deleteMany()は鹸方周茅です。及1哈方には茅鵑量周を峺協します。db.collection.deleteOne()で鹸方周マッチした魁栽は、どれか1つだけが茅されます。

k婢した聞い圭

ここまで需てみると、コマンドと冱うよりかはプログラムの咫鵑鯤椶韻泙后gは馨看稼乙看壊鞄は干温厩温皆界姻庄沿岳および鰻看糸艶.逮壊の檎掘永晦桟廠で強いているため、參和のような芝峰も竃栖ます。

["hoge","foo","bar"].forEach(name => db.getCollection(name).insertOne({x: 1}))

貧芝は塘双を韓看姻掘温界鞄で指すことで、hogefoobarの3つコレクションに揖じドキュメントを携襪垢襯灰泪鵐匹任后4害恒慌抗СΠ庄沿岳を岑っている繁であれば儕半みのある慕き圭かと房います。

デ`タベ`ス塘和のコレクションを畠て茅したい魁栽は、參和のような芝峰ができます。

db.getCollectionNames().forEach(name => db.getCollection(name).drop())

おわりに

MongoDBでQうドキュメントはBSONで、BSONは仝バイナリ侏JSON々です。JSONは、仝JavaScript Object Notation々の待各で、圷?はJavaScriptのオブジェクトの燕隈に喇栖します。そういった嘘尚からmongoshもJavaScriptの湖でけるのでしょう。JavaScriptを岑っているエンジニアであれば、H才來が互くQえるかと房います。

ではまた。


Recommendおすすめブログ