TIL(mongodb+CRUD+@)

5797 ワード

・自分で整理したTIL💪 なぜMongodb?
なぜデータベースを使用するのですか?
データは揮発性です.プログラムクローズですが、データは消えてしまいます...
保存を続行するには、db...
プログラム(ファイル)のデータ容量は限られている.
データとデータベースシステム...一緒に行動せよ!
複数のユーザーが使いやすい
RDBMS-sql<->SQLがサポートするすべての機能にほぼ代わる
バックエンドでのデータベースの重要性は非常に大きい!
スキーマ->NoSQL
sql->モードはすべてあります.アーキテクチャがないことを心配しません.データのソート、分類はnosqlより速い.
->金融取引、統計...これらをエクスポートする必要があるときは、いいですね.
->相手(真ん中が切れても->始まらない.お金自体が出ていないから)
->お金の完全性(総額は守らなければならない)
->sqlはこの目標をサポートします!!!非常に重要な行ex.銀行はrdbmsでなければなりません
(短所)パターン仕様を守っているのでいいですね
コラム(完全性を保つためには、すべての値を記入する必要があります)...重すぎる
負荷を分散するのは容易ではないでしょう.🔥
nosql->アーキテクチャがない->サービス進入障壁が低い->気に入らない場合は、将来の子供だけ例外処理すればよい.
->流量が増えるにつれて...フェイスブック...
->データの一貫性を放棄することで多くのメリットが得られます.
->目標を支援しない.途中で切れても答えはない私はあなたの完全性を尊重しません.
->複数機器の負荷処理(比較的容易)
(欠点)アーキテクチャがなく、標準化されたデータを得るのが難しい
row=機密データ1行->レコード<->ドキュメント(nosql)
->db別々のストレージはよくあることです
量が多いからかもしれない/負荷が大きいからかもしれない(通常はもっと深刻)
mongodbに自動増分はありません
mongodbにobjectIDがあります!(ex.pk) : _id:ObjectID
mongodbには2つのアーキテクチャ->ドキュメント:a:1、a:「1」、a:、(aでソート可能)があります.
Index(mongodb)
->リストまたは複数のデータ型をインデックスできます
pymongo先...!
「インデックスデータの事前ソート!」「繰り上げ」
それらを並べますか?何を基準にしますか?
カラムのインデックスを作成します.
複合インデックス->複数のコラムで使用可能
データベース内のインデックスを確認!!!
データベースにアクセスするときは、dbがストレスを受けないように気をつけてください.
可能であれば、Indexは適切に*
(欠点)インデックス登録を完了する必要がある欠点
ある程度性能を放棄しました...減少index
readとwriteの2つをよく考えてデザインします!!
すべての悪い演算子をチェック
hashのブログ...全部見ましょう^^
どんなに遅いクエリーでも何度か実行され、オペレータのみが使用されます.それは大丈夫です.
まずはmongodbに詳しい!
テーブルも作って...やるから!
mongodb&一緒にフラスコを見て(1-2週間)
mongoshで実習🦖
> show dbs # 데이터베이스 목록 보기

> db # 현재 사용중인 db

> use <생성할 DB 이름>   # DB가 없다면 생성, 이미 있다면 접속

> db
imls

# db.createCollection("<생성할 콜렉션 이름>")   # 콜렉션 생성하기

> db.createCollection("imlmdb")  # 테이블 생성된 것
{ "ok" : 1 }

> show collections   # 콜렉션 리스트 출력
class
tok

# Create (insert)
> db.class.insert({"user_id":1, "name":"mimi"})
{
  acknowledged: true,
  insertedIds: { '0': ObjectId("61b982ddc4a0dfcb0cc67b66") }
}

>> db.class.insertMany([{"user_id":2, "name":"hash"},{"user_id":3,"name":"nex"},{"user_id":4,"name":"ria"}])
{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("61b9835ec4a0dfcb0cc67b68"),
    '1': ObjectId("61b9835ec4a0dfcb0cc67b69"),
    '2': ObjectId("61b9835ec4a0dfcb0cc67b6a")
  }
}

# Read (find)
> db.class.find({}) # 다 찾기
[
  {
    _id: ObjectId("61b982ddc4a0dfcb0cc67b66"),
    user_id: 1,
    name: 'mimi'
  },
  {
    _id: ObjectId("61b9835ec4a0dfcb0cc67b68"),
    user_id: 2,
    name: 'hash'
  },
  {
    _id: ObjectId("61b9835ec4a0dfcb0cc67b69"),
    user_id: 3,
    name: 'nex'
  },
  {
    _id: ObjectId("61b9835ec4a0dfcb0cc67b6a"),
    user_id: 4,
    name: 'ria'
  }
]

> db.class.find({"user_id":4})
[
  {
    _id: ObjectId("61b9835ec4a0dfcb0cc67b6a"),
    user_id: 4,
    name: 'ria'
  }
]

# Update
> db.class.update({"name":"ria"}, {$set:{"name":"ria", "age":22}})
# $set을 사용해주어야함!

{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

# 이후에 find로 찾아주면 update 된게 확인됨.

# Delete
> db.class.remove({"name":"mimi"})
{ acknowledged: true, deletedCount: 1 }
  • @
  • > db.class.find({"name":{$ne:"sophia"}})
    # name이 sophia가 아닌 자료 찾기
    
    > db.class.find({"user_id":{"$lt":4}})
    # user_id가 4보다 작다
    
    > db.class.find({"user_id":{"$lte":4}})
    # user_id가 4보다 작거나 같다
    
    > db.class.find({"user_id":{"$gt":4}})
    # user_id가 4보다 크다
    
    > db.class.find({"user_id":{"$gte":4}})
    # user_id가 4보다 크거나 같다
    
    > db.class.find({ $and: [{"user_id":{"$gte":3}}, {"name":"ria"}]})
    # and 구문: user_id가 3보다 크거나 같으면서 and name이 ria인 자료 찾아줘
    # 둘다 참이면 참, 하나라도 거짓이면 거짓(거짓이면 안나옴)
    
    > db.class.find({ $or: [{ "user_id": { "$gte":6 } }, { "name": "ria" }] })
    # or 구문: user_id가 6보다 크거나 같고 or name이 ria인 자료 찾아줘
    # 하나라도 참이면 참, 둘다 거짓이면 거짓
  • ソート
  • > db.class.find().sort({"user_id":1})
    # 1이면 오름차순(1,2,3...)
    # -1이면 내림차순(4,3,2,1...)
    
    > db.class.find().sort({"name":1})
    # 문자열도 1과 -1로 오름차순, 내림차순 가능
    
    > db.class.find().limit(3)
    # 3개만 보여줭
    
    > db.class.find().sort({"name":1}).limit(2)
    # sort랑 limit 같이 쓸수도있어
  • 特定フィールドのみ出力
  • > db.class.find({},{_id:0,"user_id":1})
    # 0은 나오게하지않을 필드, 1은 나오게할 필드
    
    あ….sql.. nosqlは捨てる...
    ああおもしろいおもしろい...呪文を暗唱して…^^💪
  • mongoメソッド学習:https://docs.mongodb.com/manual/reference/method/#native
  • 参考:https://blog.naver.com/shino1025/221293123637