8.モンゴデビ


NoSQL vs SQL


SQLNoSQLルールに準拠するデータフリーデータ接続は、接続の安定性、一貫性のある拡張性、可用性テーブル、低、列セット、ドキュメント、フィールドをサポートしません.

デフォルトコマンド


1)データベース関連

  • DBビュー
  • > show dbs
  • 現在のデータベースチェック
  • > db
  • 現在のデータベース情報
  • > db.status()
  • DB(ない場合は作成)
  • が選択されています.
    > use [데이터베이스명]
    削除
  • DB
  • > db.dropDatabase()

    2)Collection関連


    作成
  • コレクション
  • > db.createCollection('컬렉션명')
    削除
  • コレクション
  • > db.[컬렉션명].drop()
  • コレクションリストクエリー
  • > show collections

    3)その他の演算子


  • 比較演算子
    オペレータは、$eq(等しい)が所与の値と一致するフィールド$ne(等しくない)が所与の値と一致しないフィールド$gt(より大きい)が所与の値より大きいフィールド$gte(より大きいまたは等しい)が所与の値より大きいフィールド$gte(より小さいまたは等しい)が所与の値より小さいフィールド$lte(より小さいまたは等しい)が所与の値より小さいフィールド$lte(より小さいまたは等しい)を説明する.

  • 論理演算子
    オペレータは、$orが少なくとも1つの条件を満たすdocument$と、複数の条件を同時に満たすdocument$norがdocument$not条件を満たさないdocument$exists特定フィールド$existsを有することを示すと、

  • 集合演算子
    演算子説明$ne(等しくない)は、所与の値$inが所与の配列に属する値$ninと一致せず、空の配列に属さない値

  • 制限者
    オペレータ説明$inc値増加/減少$mulに$divide$renameフィールド名を乗じて$setフィールド値を変更し、フィールドがない場合は$unsetフィールド削除を追加
  • Create


    InsertOne(document,writeConcern):エンティティを作成する


    InterMany(ドキュメント、writeConcern、ordered):複数のドキュメントを作成する


    パラメータは、ドキュメントセットに挿入するドキュメントwriteConcernリクエストがいつ応答するかを示す動作ソート
  • insertOne()
  • > db.[컬렉션명].insertOne({name:"park", age:26})
  • insertMany()
  • > db.[컬렉션명].insertMany([
      {name:"이새롬", age: 26},
      {name:"송하영", age: 26},
      {name:"장규리", age: 26},
      {name:"박지원", age: 25},
      {name:"노지선", age: 25},
      {name:"이서연", age: 23},
      {name:"이채영", age: 23},
      {name:"이나경", age: 23},
      {name:"백지헌", age: 20}
    ])
    

    Read


    findOne(query,projection):ドキュメントクエリー


    find(query,projection):複数のエンティティを表示


    クエリー・パラメータの説明queryDocumentのデータム投影を指定するフィールド
  • findOne()
  • > db.[컬렉션명].findOne() //1개의 도큐먼트만 조회
    > db.[컬렉션명].findOne({status:"A"})  //status가 A인 1개의 도큐먼트 조회
    > db.[컬렉션명].findOne({status:"A"}, {age:1, _id:0}); // status가 A인 도큐먼트 1개의 age만 조회
  • find()
  • > db.[컬렉션명].find() //모든 도큐먼트 조회
    > db.[컬렉션명].find({},{_id:0, name:1, age:0}) //모든 도큐먼트의 name만 조회
    > db.[컬렉션명].find({status:"A"}) //status가 A인 모든 도큐먼트 조회
    > db.[컬렉션명].find({status:"A", age:50}) //status가 A이고 age가 50인 모든 도큐먼트 조회
    > db.[컬렉션명].find({$or:[{status:"A"}, {age:50}]}) // status가 A이거나 age가 50인 도큐먼트 조회
    > db.[컬렉션명].find({age:{$gt:25}}) //age가 25보다 큰 도큐먼트 조회
    > db.[컬렉션명].find({age:{$gt:25, $lte:50}}) //age가 25보다 크고 50보다 작거나 같은 도큐먼트 조회
    > db.[컬렉션명].find({$or:[{age:5}, {age:15}]}) //age가 5거나 15인 도큐먼트 조회
    > db.[컬렉션명].find({user_id:/bc/}) //user_id가 %bc%인 도큐먼트 조회(user_id에 bc가 들어가는 도큐먼트)
    > db.[컬렉션명].find({user_id:/^bc/}) //user_id가 bc%인 도큐먼트 조회(user_id가 bc로 시작하는 도큐먼트)
  • カウント
  • > db.[컬렉션명].count() //전체 카운트
    > db.[컬렉션명].count({user_id:{$exists:false}})//user_id가 없는 컬럼 개수
    > db.[컬렉션명].count({age:{$gt:30}})
      == db.[컬렉션명].find({age:{$gt:30}}).count()
  • distinct
  • > db.[컬렉션명].distinct("도큐먼트명")
  • リミット
  • > db.[컬렉션명].find().limit(2)
  • ソート
  • > db.[컬렉션명].find({status:"A"}).sort({user_id:1}) //오름차순 정렬
    > db.[컬렉션명].find({status:"A"}).sort({user_id:-1}) //내림차순 정렬

    Update


    updateOne(query、update、options):ドキュメントを更新する


    updateMany(filter、update、options):複数のドキュメントを更新


    parameterDescriptionquery更新するエンティティ更新コンテンツオプションフィルタ更新するエンティティのみを使用する場合
  • updateOne()
  • > db.[컬렉션명].updateOne({name:'이나경'}, {$set:{age:24}})
  • updateMany()
  • > db.[컬렉션명].updateMany({status:"A"}, {$inc:{age:3}})
    > db.[컬렉션명].updateMany({age:{$gt:40}}, {$set:{status:"B"}})//age가 40보다 큰 도큐먼트의 status를 b로 변경

    Delete


    deleteOne(query):エンティティを削除


    deleteMany(query):複数のドキュメントを削除


    parameterDescriptionqueryのドキュメントを削除するには
  • deleteOne()
  • > db.[컬렉션명].deleteOne({status:"A"})
  • deleteMany()
  • > db.[컬렉션명].deleteMany({})
    > db.[컬렉션명].deleteMany({age:{$lt:30}}) //age가 30보다 작은 도큐먼트 삭제