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

峻さん、こんにちは。晦永蝕�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}))

貧芝は塘双を韓看姻掘温界鞄で指すことで、hoge、foo、barの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おすすめブログ