ドキュメントを追加する

コレクションにドキュメントを追加/生成してみます。

データベースに接続する
ドキュメントを追加する


データベースに接続する

はじめに、ドキュメントの入れ物となるデータベースに接続する必要があります。mongoシェルでuse データベース名と入力することで接続できます。
では、fukuiというデータベースに接続してみます。

> use fukui
switched to db fukui
>

このuseコマンドですが、すでに作成されたデータベースがあれば接続し、なければ作成するという便利なコマンドです。
なお、正確に言うと、useコマンドで接続しただけではデータベースの実体は作成されません。ドキュメントが追加された段階で、初めて実体が作成されます。


ドキュメントを追加する

では、接続したデータベースにfoodsコレクションを作成し、その中にドキュメントを追加してみます。

> db.foods.<strong>insert</strong>({name:"越前おろしそば"})

RDBでは、テーブルを作成し、カラムを定義し、レコードを追加する…という手続きが必要ですが、MongoDBではこれだけでコレクションが作成され、データを追加できてしまいます。簡単ですね。
この{name:"越前おろしそば"}の部分が1件分のドキュメントであり、JSONオブジェクトの形式で記述します。

また、何らかの処理を実行すると、処理の結果が格納されたWriteResultオブジェクトが返ります。

WriteResult({ "nInserted" : 1 })

例えば、1件のドキュメントが正常に追加された時には、{ "nInserted" : 1 }というオブジェクトを格納したWriteResultオブジェクトを返します。

定義した変数にJSONオブジェクトを格納し、それをコレクションに追加する、という記述もできます。

> var food = {name:"ソースカツ丼"}
> db.foods.insert(food)

配列に格納したJSONオブジェクトをまとめて追加することもできます。

> db.foods.insert(
    [
      {name:"越前がに"},
      {name:"へしこ"}
    ]
)

また、同一のコレクション内に、構造の異なるドキュメントを追加することもできます。ここがRDBとの大きな違いになります。
さらに、同一のキーに対し、異なる型の値を格納するなんてこともできてしまいます。JSONオブジェクトなので当然といえば当然なのですが。

> db.foods.insert(
    [
      {name:"水羊かん", shelflife:"5 days"},
      {name:"羽二重餅", shelflife:14, pieces:2},
      {name:"五月ヶ瀬", pieces:[8, 16, 21, 32]}
    ]
)