mongodb入門-シロ


–日常的な収集
概要
MongoDBは高性能、オープンソース、モードレスのドキュメント型データベースで、現在のNoSqlデータベースで人気のあるデータベースです.従来のリレーショナル・データベースまたはキー/値ストレージの代わりに、多くのシーンで使用できます.MongoDBは、キー値(key=>value)のペアからなるデータ構造を持つドキュメントとしてデータを格納します.MongoDBドキュメントはJSONオブジェクトに似ています.フィールド値には、他のドキュメント、配列、およびドキュメント配列を含めることができます.
とくせい
MongoDBは、リレーショナル・データベースではなくJSONに直接アクセスするドキュメント向けのデータベースです.これは、配列などの複雑なデータ型をドキュメントに直接挿入でき、ドキュメントのkeyやvalueが固定的なデータ型やサイズではないため、MongoDBがより柔軟であることを意味します.したがって,開発者はMongoDBを使用する際にリレーショナル・データベースの「テーブル」などのデータベース・オブジェクトを事前定義する必要がなく,データベースの設計が非常に便利になり,開発の進捗を大幅に向上させることができる.データベースではなくアプリケーションによってデータ構造が保証されます.
データベースに対応
SQL用語/概念
MongoDB用語/概念
説明/説明
database
database
データベース#データベース#
table
collection
データベース・テーブル/コレクション
row
document
データレコード行/ドキュメント
column
field
データフィールド/ドメイン
index
index
索引
table joins
テーブル接続、MongoDBはサポートされていません
primary key
primary key
メインキー、MongoDBが自動的に_idフィールドをプライマリキーに設定
mongodbインデックス
構文のキー値は作成するインデックスフィールド、1は昇順でインデックスを作成するよう指定し、降順でインデックスを作成する場合は-1を指定します.
db.collection.createIndex(keys, options)
 :db.col.createIndex({"title":1})    
	db.col.createIndex({"title":1,"description":-1})    
> db.col.getIndexes()
        :
    db.col.dropIndex({"title":1})

既存のデータのドキュメントにインデックスを作成する場合は、MongoDBがバックグラウンドでインデックスを作成するように、次のコマンドを実行します.これにより、作成時に他の操作がブロックされません.しかし、ブロックでインデックスを作成すると、作成プロセス全体が効率的になりますが、作成時にMongoDBは他の操作を受信できません.*
db.col.ensureIndex({"username":1},{"background":true})

タイミング削除
expireAfterSeconds:xxはxx秒後に自動的にドキュメントを削除するように設定されています.まず、dateタイプのフィールドが必要です.その後、このdateフィールドでインデックスを作成します.
//    (lastModifiedDate.addHours(1))   
db.log_events.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
//      2018-01-22 15:00:00     
db.log_events.insert( {
   "lastModifiedDate": new Date('Jan 22, 2018 14:00:00'),
   "logEvent": 2,
   "logMessage": "Success!"
} )

注意:即時実行ではありません:Documentの期限切れのデータをスキャンして削除するのは独立したスレッド実行で、デフォルト60 sは1回スキャンして、削除してもすぐに削除に成功するとは限りません.
mongodb文
useデータベース名データベースに入るデータベースが存在しない場合、データベースを作成する
db現在のデータベースの表示
show dbsはコンテンツが空でないデータベースを表示します
db.createCollection(「テーブル名」)長さに制限のないテーブルを作成
db.createCollection('テーブル名',{capped:true,size:1000})長さを制限するテーブルを作成
db.表名drop()コレクションの削除
show collectionsはすべてのテーブルを表示します
db.表名find()テーブルデータの検索
db.表名find({カラム名:データ1})条件付きクエリー
db.表名find({列名:データ1}).pretty()pretty()はテープの結果をフォーマットすると、構造や内容を見極めやすくなります
db.表名findOne({カラム名:データ1})は条件付きでクエリーされ、最初のエントリのみが返されます.
db.表名update({列名:データ1},{列名:データ2})データ1を検索し、データ2に置き換えます.
db.表名update({列名:データ1},{$set:{列名:データ2}})は、列がデータ1であることを検索し、すべてのデータ1をデータ2に置き換える
db.表名remove({列名:データ1},{justOne:true})データ1の行を削除し、justOneがtrueの場合は1つ削除し、falseの場合は複数の比較演算子を削除します.
$lt未満がl t e以上lte以上gt以上gt e以上gte以下gte以下gte以下gte以下ne以下
論理演算子:
$orまたは$inをカンマで直接接続できます.の内
ソート:sort()
db.表名find().sort({フィールド:パラメータ})パラメータが1昇順パラメータが-1降順
ページング:limit()
db.表名find().Limit(パラメータ)パラメータは取得したエントリ数です
db.表名find().skip(パラメータ)パラメータはスキップされたエントリ数です
db.表名count({カラム名:データ1})統計データのエントリ数
db.表名find(カラム名:データ1).distinct(‘デリバリーフィールド’,{カラム名:データ2})重複除外
Springboot接続mongodb
1、導入パッケージ


    org.springframework.boot
    spring-boot-starter-data-mongodb
    1.5.9.RELEASE


2、データソースの構成
     
spring.data.mongodb.uri= mongodb://  

3、エンティティに注記を追加する
エンティティに@Document注記を追加します.collection=「対応するテーブル名」です.
属性に@Filed注記を追加します.値は対応するフィールド名です.
@Getter
@Setter
@Document(collection = "User")
public class User {
    /*
      id:
    */
  @Field("id")
    private String id;
    /*
       
    */
    @Field("UserName")
    private String userName;
    /*
      
     */
    @Field("sex")
    private String sex;
}

4、業務層でMongoDbを使用する方法:

@Service
public class UserServiceImpl implements UserService {

    @Resource
    private MongoTemplate mongoTemplate;


    @Override
    public long getCount() {
        Query query = new Query();
        long count = mongoTemplate.count(query,User.class);
        return count;
    }

}

MongoTemplateの簡単な使用
エンティティクラスを作成し、理解しやすい
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
 
@Document(collection = "collection_name")
public class UserPO {
    @Indexed
    @Field("user_id")
    private Long userId;
 
    @Field("username")
    private String username;
 
    @Field("password")
    private String password;
 
    public Long getUserId() {
        return userId;
    }
 
    public void setUserId(Long userId) {
        this.userId = userId;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
}

添削して調べる.

//    
UserPO userPO = new UserPO();
userPO.setUserId(1L);
userPO.setUsername("username");
userPO.setPassword("password");
mongoTemplate.insert(userPO);
 
//    
LinkedList<UserPO> pos = Lists.newLinkedList();
UserPO userPO = new UserPO();
userPO.setUserId(1L);
userPO.setUsername("username");
userPO.setPassword("password");
pos.add(userPO);//        
mongoTemplate.insertAll(pos);
 
//  
Query query=new Query(Criteria.where("_id").is(id));
mongoTemplate.remove(query,UserPO.class);
 
//  
Query query=new Query(Criteria.where("_id").is(id));
Update update = Update.update("      ", "    ");
mongoTemplate.updateFirst(query, update, UserPO.class);
 
//  
//    
Query query = new Query();
query.skip("       ").limit("       "); 
return mongoTemplate.find(query, UserPO.class);
 
//    1,   is(" ")     and("  2").is(" 2")
Query query=new Query(Criteria.where("  1").is(" 1"));
return mongoTemplate.find(query, UserPO.class);