1. ホーム
  2. データベース
  3. モンゴルディーブ

MongoDBの共通データ型と基本操作

2022-01-23 02:27:43

NO.1 MongoDBの共通データ型

    MongoDBのドキュメントはjsonに似ていて、jsonではnull, bool, array, string, data, json objectなどのデータ型が一般的であることが分かっています。比較的少ない、例えば、データの時間型については、jsonは、jsonのような単純な最適化のためのjsonで、表現することができない、とMongoDBではなく、jsonの下で、我々はゆっくりと言う

     MongoDBの共通データ型はMySQLに近いので、比較してみてください。その共通のデータ型は

1. ヌル

NULL値または存在しないフィールドを示すために使用される

{"x":null} となります。

2. ブール

こちらはわかりやすく、真か偽か

{"x":true} です。

3. 整数

MongoDB自身のシェルでは利用できません。シェルでは、以下のように整数を表現する関数を使う必要があります。

{"x":NumberInt("3")}.

と書くと

{"x":3} です。

ここでは、3はdoubleとして表現されます。

4. 文字列

最もよく使われるデータ型

{"x": "文字列"}。

5, オブジェクトID

オブジェクトIDは12バイトのユニークなIDです

{"x":ObjectId() }.

MongoDBのデータレコードの内部、つまり、ドキュメントの内部には、_idキーが必要です、この_idキーは、単にユニークな識別子として理解することができます、MySQLのセルフインクリメント主キーに似ていますが、それは一般的にセルフインクリメントに設定されていない、分散環境では、主キーの値の同期自動増加は時間と労力の両方です、 MongoDB分散シナリオの性能を確保するには、自己生成の方法_ID、_IDの種類、オブジェクトIdタイプと呼ばれて生成することで、。

この型は12バイトのストレージを使用し、各バイトの内部は2ビットの16進数で、24ビットの文字列となる。12バイトは次のように生成される。

ビット0、1、2、3はタイムスタンプで、第2レベルの一意性を提供する

ビット4、5、6は、マシンレベルの一意性を提供する、一意のマシン識別子です

ビット 7 と 8 は、現在の世代の ObjectId のプロセス識別子で、プロセス間の一意性を確保します。

ビット9、10、11は、同一秒間に同一プロセスで生成されたObjectIdの一意性を保証するためのカウンタである。

6. 日付タイプ

日付型は、標準エポックからのミリ秒数を格納し、タイムゾーンは格納しない。

{"x":new Data()}のようになります。

その例は次の通りである。

> db.num.insert({ "age": new Date()})
WriteResult({ "nInserted" : 1 })
> db.num.find()
{ "_id" : ObjectId("5f96b5e15e5c5ff982b9c6af"), "age" : 28 }
{ "_id" : ObjectId("5f9835d0f24f04e23fb63878"), "age" : 3 }
{ "_id" : ObjectId("5f983621f24f04e23fb63879"), "age" : 3 }
{ "_id" : ObjectId("5f9838d2f24f04e23fb6387a"), "age" : ISODate("2020-10-27T15:12:18.739Z") }

7. 配列

値のコレクションまたはリストは、配列として表現することができる

{"x":["a", "b", "c" ]} のようになります。

8, インラインドキュメント

ドキュメントに他のドキュメントを含めることができる

{"x":{"foo": "bar"}} となります。

9. コード

ドキュメントにはJavaScriptのコードを含めることができます

{"x":function(){/*-----*/}}

NO.2 セット文書の基本操作

     ここが一番肝心なところでしょう。MySQLでは、追加、削除、チェックが基本機能ですが、MongoDBでもこれらのスキルは必要です。

セット関連操作

1. コレクションへのクエリ

現在のデータベース下のコレクションを表示するには、show collectionsコマンドを使用します。

2. コレクションを作成する

MongoDBでは、別にコレクションを作る必要はない。一般に、ドキュメントを直接コレクションに挿入しさえすれば、例えば、コレクションが自動的に生成されることがわかる。

> show collections # View collections
num
person

> db.aaa.insert({ "name":"yeyz"})
WriteResult({ "nInserted" : 1 })

> show collections # View collections and find that the collection aaa generates
aaa
num
person

3. コレクションを削除する

> show collections
aaa
num
person
> 
> db.aaa.drop() #Delete the collection
true
> show collections
num
person

コレクションに対する最も一般的な操作は、上記のようなものです。コレクションへの問い合わせ、コレクションの作成、コレクションの削除。

ドキュメント関連の操作に目を向けると

1. ドキュメントを挿入する

上記の例では、insert操作で文書を挿入する方法を示しました。一般的な方法を2つまとめてみました。

Method 1: direct insertion of documents
> db.aaa.insert({ "name":"yeyz"})
WriteResult({ "nInserted" : 1 })

method two: the document will be saved in the variable inside, insert the variable
> record={ "name":"zhangsan"}
{ "name" : "zhangsan" }
> db.aaa.insert(record)
WriteResult({ "nInserted" : 1 })

Find all the contents of the collection
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

2. ドキュメントを問い合わせる

クエリ ドキュメントより多くのメソッドは、長い時間のために言うことができる、ちょうど私たちのSQL構文のように、ここにすべての、最も単純な、すべてのオブジェクトを見つけるオブジェクトを見つける、または特定のオブジェクトメソッドを見つける書くための様々な方法があります。例を参照してください。

#Find all records
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
> 
>
#Find a record
> db.aaa.findOne()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

# with filter condition to find records with name=zhangsan
> db.aaa.find({ "name":"zhangsan"})
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

3. レコードの削除

レコードの削除も比較的簡単で、以下のようになります。

#Find all records
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

# Delete the record with name=zhangsan
> db.aaa.remove({ "name":"zhangsan"})
WriteResult({ "nRemoved" : 1 })
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

# Only one record left with name=yeyz
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

条件をフィルタリングしたくない場合は、単純に

db.aaa.remove() ですべてのレコードを削除します。

4. レコードの更新

MongoDB では、レコードの更新は少し厄介です。たとえば、次のようなシナリオがあります。

#Find all records
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

# with a variable indicating the document to be modified
> record={"name" : "yeyz","age":18}
{ "name" : "yeyz", "age" : 18 }

# Replace the result of the matching condition with the variables from earlier
> db.aaa.update({"name" : "yeyz"},record)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 18 }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

# Modify the age property of the variable
> record.age=20
20

# Replace the original document again
> db.aaa.update({"name" : "yeyz"},record)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 20 }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

上記の方法は、条件が一意に一致する場合には問題ありませんが、条件が一意に一致しない場面では、いくつかの落とし穴がある可能性がありますので、次回に紹介します。

一日の内容は少ないので、じっくりと少しずつ考えていきましょう。おやすみなさい。 /おやすみなさい。

上記はMongoDBの共通データ型と基本操作の詳細です。MongoDBのデータ型と基本操作の詳細については、BinaryDevelopの他の関連記事にも注目してください