初めてモンゴDBを使う
最近面接のために毎日出かけています.
👨 : 大人.MongoDBを書きますか?
👽 : ああ...いいえ...!
👨 : (なぜ来たのかと聞かれたように)?あ、それならMongoDBに質問しないでください.
後で...また私の貧富を見抜いたようだ.
それでは簡単にCRUDをしましょうか?そして複数のブログを閲覧し始めます. MongoDBの概要、インストール、データモデリング モンゴメリー+コーランを使用してCRUDを実施 MongoDB limit()、skip()メソッドを使用してページング MongoDBアーキテクチャ設計:一対一の関係 かつてGopherだった私にとって一番役に立つのは2日、モンゴル+ゴランでCRUDを実現することです.もちろん特定の言語のそれがあまり好きではありません...有名な人に言われましたが、学部の時にC++をいくつか作りました...安全と同時にPythonも作られました今はGoを愛してもいいですか?(でもなぜJavaはこんなに感情がないのか)
MongoDBのインストールから簡単なクエリーを行います.
公式サイトで取りなさい.インストールが非常に簡単リンクのダウンロード
でも比較すると時間がかかるので短いです30秒未満
RDBMSとMongDBは名前と形が少し違います
NoSQLは通常、Key/Value形式の構造を有します.顔を見るとJSONを思い出す
MongoDBも従来のNoSQLで、Key/Value形式のデータセットです.
上記のDocumentは最終的に括弧で囲まれたKey/Valueです.
RDBMSでは、Tableは、横方向(ラベル)の縦方向(属性)を用いたデータのセットを有する.
しかし、MongoDBはこれらではなく、Key/Field形式のデータフォーマットをDocumentに統合します.複数のDocumentコレクションをCollectionと呼びます.
形態の違いにメリットとデメリットはありますか?
どうせMongoDBの文章でMongoDBの長所短所を見ると横方向拡張可能な分散システム Schema-less ACID を緩和 Open Source RDBMSは水平拡張も可能であるが、水平拡張をサポートするために作成されたものではないため、より不便である.でももう30秒も経っているので、これらを全部計算すると、データを格納してロードする形で終わる文章が長すぎると思いますので、ここで切ります.
こちらのブログはよく書けています.残りはここで見よう(https://kciter.so/posts/about-mongodb)
まずDBに接続するMongoDBのデフォルトポートは27017です.次のように入力して接続してください. options.クライアント():クライアントに接続する情報を入力します. mongo.Connect():Mongoサーバに接続してクライアントに戻ります. client.Ping():接続が正常かどうかを確認します. その後authのためにmongo serverにidとpwを作成しますが、現在はありません.
さっきはキーバリューで保存すると言いましたが
また、構造体に似ているという人もいます.
structが作成され、Fieldのみが組み込まれている場合、Jsonパッケージを使用してmarshall、unmarshall、符号化、復号化できますか?こんな想いがあるんだ
正しい.よかった.
これを符号化するには、以下のような構造体を作成するだけでよい.型User struct:jsonkey/field同じ構造の構造体を作成します. json.NewDecoder().Decode():jsonファイルを構造体にマッピングします.(デコード) collection.CountDocuments():Collectionに重複するuuidがあるかどうかを確認します. collection.InsertOne():CollectionにDocumentを追加します. 書きやすいですよね?データを取り出すときも簡単です.
SetSort():生成時間ソート(昇順、降順) SetLimit():検索数はx個の に制限されます. SetSkip():どこから検索を開始するかを設定
実際に探している時もあります. collection.Find(オプション):検索データ Find().ALL():復号 上記のように探すことができます.正直Mongodbを初めて習った方も30分くらいで作れると思います
しかし、なぜ私が宿題を提出するときにskipオプションを使わずに、すべてのデータを構造体に復号し、インデックスを行うのでしょうか.どうして出て30分後にすぐに思い出しますか?
毎日布団を蹴るものを作ることができる私は本当に伝奇です...
👨 : 大人.MongoDBを書きますか?
👽 : ああ...いいえ...!
👨 : (なぜ来たのかと聞かれたように)?あ、それならMongoDBに質問しないでください.
後で...また私の貧富を見抜いたようだ.
それでは簡単にCRUDをしましょうか?そして複数のブログを閲覧し始めます.
MongoDBのインストールから簡単なクエリーを行います.
1.インストール
公式サイトで取りなさい.インストールが非常に簡単リンクのダウンロード
2.RDBMSとMongoDBの比較
でも比較すると時間がかかるので短いです30秒未満
RDBMSとMongDBは名前と形が少し違います
NoSQLは通常、Key/Value形式の構造を有します.顔を見るとJSONを思い出す
MongoDBも従来のNoSQLで、Key/Value形式のデータセットです.
上記のDocumentは最終的に括弧で囲まれたKey/Valueです.
오 구조체처럼 생겼네
RDBMS
RDBMSでは、Tableは、横方向(ラベル)の縦方向(属性)を用いたデータのセットを有する.
MongoDB
しかし、MongoDBはこれらではなく、Key/Field形式のデータフォーマットをDocumentに統合します.複数のDocumentコレクションをCollectionと呼びます.
形態の違いにメリットとデメリットはありますか?
どうせMongoDBの文章でMongoDBの長所短所を見ると
こちらのブログはよく書けています.残りはここで見よう(https://kciter.so/posts/about-mongodb)
3. Code Implementation
1.データベース接続
まずDBに接続するMongoDBのデフォルトポートは27017です.次のように入力して接続してください.
func ConnectDB() (client *mongo.Client, err error) {
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err = mongo.Connect(context.TODO(), clientOptions)
if err != nil {
return nil, err
}
err = client.Ping(context.TODO(), nil)
if err != nil {
return nil, err
}
return
}
2. Write Data
さっきはキーバリューで保存すると言いましたが
また、構造体に似ているという人もいます.
structが作成され、Fieldのみが組み込まれている場合、Jsonパッケージを使用してmarshall、unmarshall、符号化、復号化できますか?こんな想いがあるんだ
正しい.よかった.
{
uuid:"dbslqjtjfdbslzmdkdlepsxlvlzpdltusdlfksmsdltkdgksanswkduf"
name:"damon"
age:100
address:"서울 어딘가"
}
このようなjsonファイルがあると言ってください.これを符号化するには、以下のような構造体を作成するだけでよい.
type User struct{
UUID string `json:"uuid"`
Name string `json:"name"`
Age int64 `json:"age"`
Address string `json:"address"`
}
いずれにしても、そのjsonファイルをmongodbに保存するなら!func Write(writeDB *mongo.Collection, docs User) {
// 대충 공공api 비스무리한거로 json파일 받아왔다는 가정 하에
err = json.NewDecoder(resp.Body).Decode(docs)
num, err := writeDB.CountDocuments(nil, bson.M{"uuid": docs[i].uuid})
if num > 0 {
continue
}
_, err = writeDB.InsertOne(context.TODO(), docs[i])
if err != nil {
return
}
}
3. Load Data
func Load(col *mongo.Collection, page int64) (docs []User) {
findOptions := options.Find()
findOptions.SetSort(bson.D{{"created_at", -1}})
findOptions.SetLimit(20)
findOptions.SetSkip((page - 1) * 20)
res, err := col.Find(context.Background(), bson.D{}, findOptions)
if err != nil {
return
}
err = res.All(nil, &docs)
if err != nil {
return
}
return docs
}
取り出すだけでちょっと...ということで選択肢をくれました実際に探している時もあります.
しかし、なぜ私が宿題を提出するときにskipオプションを使わずに、すべてのデータを構造体に復号し、インデックスを行うのでしょうか.どうして出て30分後にすぐに思い出しますか?
毎日布団を蹴るものを作ることができる私は本当に伝奇です...
Reference
この問題について(初めてモンゴDBを使う), 我々は、より多くの情報をここで見つけました https://velog.io/@myong/MongoDB-처음-써보기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol