[MongoDB]DBとCRUDの作成


インストール後にDBを作成

1.mongodbの実行


前回述べたようにbrewでmongodbサーバを実行します.mongodbclientも実行します.
...以下のコマンドは省略...
mongodbコマンドを入力できるshellがアクティブになります.
# mongo
>

--------------------------------


2.DBの作成


+)現在使用されているDBをチェック


作成する前に、現在使用されているDBが何であるかを確認してみましょう.
> db
test
testというdbがあることを確認できます.
私は.何もしてないみたい…?前回インストールした時にやったようですが...
本当のことをしましょう.mongodbにDBを作成するコマンドを入力します.次に、現在使用されているdbを確認します.
use$で使用するdb名
> use mongo_practice1
switched to db mongo_practice1
> db
mongo_practice1
useコマンドを使用してmongodbを生成すると、dbは作成時にアクティブになります.

+)データベース・リストのチェック


今何があるか見てみろdb
> show dbs
admin     0.000GB
config    0.000GB
dbsparta  0.000GB
local     0.000GB
既存のテストと私が作成したmongo実践1はリストにありません!
リストに表示するには、少なくとも1つのドキュメントを生成する必要があります.

3.MongoDBのC.R.U.D


ドキュメントを作成します.つまり、CRUDで作成します.そのためには、まずMongoDBのCRUDコマンドを知る必要があります.
注意:https://myjamong.tistory.com/57?category=835222

-作成さくせい:作成(挿入)さくせい(そうにゅう)


新しいコレクション名を入力すると、すぐにそのコレクションが作成され、そのコレクションのドキュメントも作成されます.
db.$collection.insert({key:value})

-検索:Read(検索)


すべてのクエリー
db.$collection.find()
条件付きクエリー
db.$collection.find({key:value})
<サンプル条件クエリー>

-更新する:更新する


ドキュメント全体の変更
db.$collection.update({既存のドキュメントを指定するキー:value},{新しく変更したキー:value})
特定の値の変更または新規値の作成
db.$collection.update({既存のドキュメントを指定するキー:value},{$set:{追加するキー:追加する値})

-削除:Delete


特定のフィールドの削除(update-sunsetを使用)
db.$collection.update({既存のドキュメントを指定するキー:value},{$unset:{削除するキー:その値})
特定のドキュメントの削除
db.$collection.remove({条件キー:その値})
特定のコレクションの削除
db.$collection.update({})

4.文書の作成


上記のコマンドに従ってmongo_practice1に新しいcollectionとdocumentを作成します.
氏名/生年月日/電子メール/趣味(1~3個)/コロナワクチン接種の有無(T/F)
> use mongo_practice1
> db.users.insert({name : "jello", birth : 950403, email : "[email protected]", hobby : ["hiking", "watch movie"], vaccination : False})
私はbooleanの価値があることを知っています.しかし、エラーが発生しました.
uncaught exception: ReferenceError: False is not defined :
簡単です.大文字ではなく、小文字を入力すればいいです.
> use mongo_practice1
> db.users.insert({name : "jello", birth : 950403, email : "[email protected]", hobby : ["hiking", "watch movie"], vaccination : false})
WriteResult({ "nInserted" : 1 })
あとで確認!
> use mongo_practice1
> db.users.find()
{ "_id" : ObjectId("60bcd8101abf6cdd64bfc938"), "name" : "jello", "birth" : 950403, "email" : "[email protected]", "hobby" : [ "hiking", "watch movie" ], "vaccination" : false }
> show dbs
admin            0.000GB
config           0.000GB
dbsparta         0.000GB
local            0.000GB
mongo_practice1  0.000GB
💡 参考までにmongodbはdocumentのidで、名前_idは自動的に値を生成します!
もう少しやってみる
> db.users.find()
{ "_id" : ObjectId("60bcd8101abf6cdd64bfc938"), "name" : "jello", "birth" : 950403, "email" : "[email protected]", "hobby" : [ "hiking", "watch movie" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9b91abf6cdd64bfc939"), "name" : "보라돌이", "birth" : 901105, "email" : "[email protected]", "hobby" : [ "talking", "listening music" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9d91abf6cdd64bfc93a"), "name" : "뚜비", "birth" : 930705, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : true }
{ "_id" : ObjectId("60bcd9fd1abf6cdd64bfc93b"), "name" : "나나", "birth" : 940205, "email" : "[email protected]", "hobby" : [ "walking, singing" ], "vaccination" : true }
{ "_id" : ObjectId("60bcda181abf6cdd64bfc93c"), "name" : "뽀", "birth" : 200605, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : false }
😢 よく見ると、ナナの趣味の引用符に誤字があった.でもどうして間違えないの...?本当に入力を押して保存しますか、、、?
すぐに修正しましょう.
> use mongo_practice1 #이건그냥 보험삼아 해주는것. 혹여나 다른db 쓰고있을경우도 있으니 습관처럼 입력하자
> db.users.update({name:"나나"}, {$set : {hobby : ["walking", "singing"]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.find()
{ "_id" : ObjectId("60bcd8101abf6cdd64bfc938"), "name" : "jello", "birth" : 950403, "email" : "[email protected]", "hobby" : [ "hiking", "watch movie" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9b91abf6cdd64bfc939"), "name" : "보라돌이", "birth" : 901105, "email" : "[email protected]", "hobby" : [ "talking", "listening music" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9d91abf6cdd64bfc93a"), "name" : "뚜비", "birth" : 930705, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : true }
{ "_id" : ObjectId("60bcd9fd1abf6cdd64bfc93b"), "name" : "나나", "birth" : 940205, "email" : "[email protected]", "hobby" : [ "walking", "singing" ], "vaccination" : true }
{ "_id" : ObjectId("60bcda181abf6cdd64bfc93c"), "name" : "뽀", "birth" : 200605, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : false }

+)各種タスクの実行


1.複数の条件を満たす文書を修正する


DjangoのORMでfilterでquerysetのすべてのオブジェクトの値を変更したように、複数の条件の値を更新できます.
ワクチン接種の対象に対して最も好きな果物:イチゴ畑を生成する.
> use mongo_practice1
> db.users.update({vaccination : true}, {fruit : "strawberry"}, {multi : true})
様々な条件が変更されるので、複数の値にtrueを指定します.
そうでなければ、変更は最初のオブジェクトにのみ反映されます.

▼ミス。


... うん...ミスをしました.
まず,$set命令語が使用されなかったため,対応する文書の内容は徹底的に覆された.複数の値が与えられていないため、最初に対応するオブジェクトのみが修正されます.
> db.users.update({vaccination : true}, {fruit : "strawberry"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.find()
{ "_id" : ObjectId("60bcd8101abf6cdd64bfc938"), "name" : "jello", "birth" : 950403, "email" : "[email protected]", "hobby" : [ "hiking", "watch movie" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9b91abf6cdd64bfc939"), "name" : "보라돌이", "birth" : 901105, "email" : "[email protected]", "hobby" : [ "talking", "listening music" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9d91abf6cdd64bfc93a"), "fruit" : "strawberry" }
{ "_id" : ObjectId("60bcd9fd1abf6cdd64bfc93b"), "name" : "나나", "birth" : 940205, "email" : "[email protected]", "hobby" : [ "walking", "singing" ], "vaccination" : true }
{ "_id" : ObjectId("60bcda181abf6cdd64bfc93c"), "name" : "뽀", "birth" : 200605, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : false }
元に戻して、よく更新してください.
> db.users.update({fruit:"strawberry"}, {name : "뚜비", birth : 930705, email : "[email protected]", hobby : ["dancing"], vaccination : true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.find()
{ "_id" : ObjectId("60bcd8101abf6cdd64bfc938"), "name" : "jello", "birth" : 950403, "email" : "[email protected]", "hobby" : [ "hiking", "watch movie" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9b91abf6cdd64bfc939"), "name" : "보라돌이", "birth" : 901105, "email" : "[email protected]", "hobby" : [ "talking", "listening music" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9d91abf6cdd64bfc93a"), "name" : "뚜비", "birth" : 930705, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : true }
{ "_id" : ObjectId("60bcd9fd1abf6cdd64bfc93b"), "name" : "나나", "birth" : 940205, "email" : "[email protected]", "hobby" : [ "walking", "singing" ], "vaccination" : true }
{ "_id" : ObjectId("60bcda181abf6cdd64bfc93c"), "name" : "뽀", "birth" : 200605, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : false }

> db.users.update({vaccination : true}, {$set : {fruit : "strawberry"}}, {multi : true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.users.find()
{ "_id" : ObjectId("60bcd8101abf6cdd64bfc938"), "name" : "jello", "birth" : 950403, "email" : "[email protected]", "hobby" : [ "hiking", "watch movie" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9b91abf6cdd64bfc939"), "name" : "보라돌이", "birth" : 901105, "email" : "[email protected]", "hobby" : [ "talking", "listening music" ], "vaccination" : false }
{ "_id" : ObjectId("60bcd9d91abf6cdd64bfc93a"), "name" : "뚜비", "birth" : 930705, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : true, "fruit" : "strawberry" }
{ "_id" : ObjectId("60bcd9fd1abf6cdd64bfc93b"), "name" : "나나", "birth" : 940205, "email" : "[email protected]", "hobby" : [ "walking", "singing" ], "vaccination" : true, "fruit" : "strawberry" }
{ "_id" : ObjectId("60bcda181abf6cdd64bfc93c"), "name" : "뽀", "birth" : 200605, "email" : "[email protected]", "hobby" : [ "dancing" ], "vaccination" : false }

2.GUI検証の使用


前にStudio 3 Tが取り付けられていました.私のローカルmongodbに接続して確認してください!

datatypeからObjectId / String / Double / Array / Boolの形態が見られる.

--------------------------------


5.DBの削除


不要なDBを削除しましょう.
> use #삭제할db이름
> db.dropDatabase()
まだmongo実践1を削除していません…!!🔥