読者です 読者をやめる 読者になる 読者になる

SQL脳に優しいMongoDBクエリー入門

mongoコマンドから接続した際にオールドタイプ(SQL脳)たる我々人類にも
調べやすい形でinsert、select、updateを行う方法を調べました。
 
定義参照

// use [データベース名]
use [データベース名]

// show databases
show dbs

// show tables
show collections

参照系

// select * from [コレクション名]
db.[コレクション名].find()
 
// select * from [コレクション名] where x=4
db.[コレクション名].find({x:4})
 
// select j from [コレクション名] where x=4
db.[コレクション名].find({x:4}, {j:1})
 
// select * from [コレクション名] limit 1
db.[コレクション名].findOne()
 
// select * from [コレクション名] where x > 1
db.[コレクション名].find({x : {$gt: 1}})
 
// select * from [コレクション名] where x < 3 and x > 1
db.[コレクション名].find({x : {$gt: 1, $lt: 3}})
 
// select * from [コレクション名] limit 3
db.[コレクション名].find().limit(3);
 
// join的な事も可能
// select * from [コレクション名1] inner join [コレクション名2] on x = x
p = db.[コレクション名1].findOne({x:1}); 
db.[コレクション名2].findOne( { _id : p.x } ) 
 
// select * from [コレクション名] order by x desc
db.[コレクション名].find().sort({x:-1});
 
// select count(*) from [コレクション名]
db.[コレクション名1].find({x:1}).count();
 
// explan select * from [コレクション名] where x = 1
db.[コレクション名].find({x:1}).explain(); 

更新系

// insert into [コレクション名] (x) value( 3 )
t = { x : 3 };
db.[コレクション名].insert(t);
 
// update [コレクション名] set y = 1 where x = 1
db.[コレクション名].update( { x:1 }, { $set: { y : 1 } } );
 
// delete from [コレクション名] where x = 1
db.[コレクション名].remove({x:1})
t = { x : 3 };
 
// 「_id」が存在すればupdate、存在しなければinsert
db.[コレクション名].save(t)

index関係

// create index hoge on [コレクション名] (x)
db.[コレクション名].ensureIndex({x:1});
 
// 複合indexも可能
// create index hoge on [コレクション名] (x,y)
db.[コレクション名].ensureIndex({x:1, y:1});
 
// create unique index hoge on [コレクション名] (x)
db.[コレクション名].ensureIndex({x: 1}, {unique: true});
 
// drop index hoge
db.[コレクション名].dropIndex({x: 1, y: -1})
 
// コレクションの全てのindex削除
db.[コレクション名].dropIndexes();
 
// バックグラウンドで (lock無しに)indexを張る
db.[コレクション名].ensureIndex({x:1}, {background:true});