mongodbのデータ取り出し方の操作方法。検索と登録方法 mongodb

# mongodb ログイン
mongo

#

MongoDBとRDBの用語比較(厳密には異なる)or検索やin検索の場合は、その後ろに[] で配列で条件を指定
その中身はそれぞれ{}でくくると覚えておくといいかな


# sort昇順
> db.user_collect.find().sort({age:1})
{ _id : ObjectId( 58e05486aa5f6141259db9a2 ) user_id : uid001 age : 10 status : A }
{ _id : ObjectId( 58e05486aa5f6141259db9a3 ) user_id : uid002 age : 20 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a4 ) user_id : uid003 age : 30 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a5 ) age : 40 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a6 ) user_id : uid005 age : 50 status : C }
>
>
>
# sort降順
> db.user_collect.find().sort({age:-1})
{ _id : ObjectId( 58e05486aa5f6141259db9a6 ) user_id : uid005 age : 50 status : C }
{ _id : ObjectId( 58e05486aa5f6141259db9a5 ) age : 40 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a4 ) user_id : uid003 age : 30 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a3 ) user_id : uid002 age : 20 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a2 ) user_id : uid001 age : 10 status : A }
>

sortは、findの外
sortはfindの時もそうだけど、していするばあいは({}) と外は{}で、中は{}でくくる必要がある





# 更新
> db.user_collect.update({user_id: uid002 } {$set:{ age:21 }})
WriteResult({ nMatched : 1 nUpserted : 0 nModified : 1 })
>
> db.user_collect.find()
{ _id : ObjectId( 58e05486aa5f6141259db9a2 ) user_id : uid001 age : 10 status : A }
{ _id : ObjectId( 58e05486aa5f6141259db9a3 ) user_id : uid002 age : 21 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a4 ) user_id : uid003 age : 30 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a5 ) age : 40 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a6 ) user_id : uid005 age : 50 status : C }
>


# 削除 remove()
> db.user_collect.find()
{ _id : ObjectId( 58e05486aa5f6141259db9a2 ) user_id : uid001 age : 10 status : A }
{ _id : ObjectId( 58e05486aa5f6141259db9a3 ) user_id : uid002 age : 21 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a4 ) user_id : uid003 age : 30 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a5 ) age : 40 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a6 ) user_id : uid005 age : 50 status : C }

> db.user_collect.remove( { user_id: uid002 } )
WriteResult({ nRemoved : 1 })


> db.user_collect.find()
{ _id : ObjectId( 58e05486aa5f6141259db9a2 ) user_id : uid001 age : 10 status : A }
{ _id : ObjectId( 58e05486aa5f6141259db9a4 ) user_id : uid003 age : 30 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a5 ) age : 40 status : B }
{ _id : ObjectId( 58e05486aa5f6141259db9a6 ) user_id : uid005 age : 50 status : C }
>



# 現在のデータベース状況を知る(ステータスじゃないよ、統計のstatsだよ)
> db.stats()
{
db : test
collections : 0
objects : 0
avgObjSize : 0
dataSize : 0
storageSize : 0
numExtents : 0
indexes : 0
indexSize : 0
fileSize : 0
ok : 1
}
>

# データベース一覧
show dbs

# mongodbでは RDBでいう、create database、create tableは必要ない
use データベース名
でそのデータベース名にスイッチするが、その時点で存在してなくていい



MongoDBのデータ構造とRDBのデータ構造の比較
---------------------------------------------------
RDBでの呼称 → MongoDBでの呼称
・database → database
・table → collection
・row → document
・column → field
・index → index
・primary key _→ id field
※ MongoDBでは, _id の値に自動的に一意な文字列が採番される。
---------------------------------------------------
mongodbでは操作する際に、つねにフィールド名(カラム名)の指定が必要。
つまりカラム名もいっしょにその都度登録される。
そのため、RDBとMongoDBの大きな違いとして
RDBではテーブル中のすべてのレコードが同じカラムを有するのに対し,
MongoDBではドキュメントごとに自由なフィールドを定義できる



データベース操作
MySQL MongoDB
> SHOW DATABASES; > show dbs
> USE testdb; > use testdb
> CREATE DATABASE testdb; useコマンドで自動生成
> DROP DATABASE testdb; > use testdb
> db.dropDatabase()
> DESC testdb; なし



> show collections
system.indexes
user_collect

> show dbs
aaaaa 0.078GB
local 0.078GB
testdb 0.078GB
>