最終更新: yamanobori_old 2014年11月22日(土) 06:39:39履歴
>help DBをつくる >use hogedb; コレクションを作る >db.createCollection("posts"); >show collections; コレクションを削除する >db.posts.drop(); 状態を見る >db.stats(); DBを削除する >db.dropDatabase(); >db.help;
> for (var i = 0; i < 10; i++) { db.posts.insert({name: "hoge" + i}); } 削除 > db.users.remove({name:"user-10"});
> db.users.find({team: {$ne: 1}}); > db.users.find({score: {$gt: 40}}); > db.users.find({score: {$gte: 40}}); > db.users.find({score: {$gte: 40,$}}); > db.users.find({score: {$gte: 41,$lt: 70}});
1件抽出 > db.users.findOne(); 3件抽出 > db.users.find().limit(3); n件目から抽出開始(0オリジン) > db.users.find().limit(2); { "_id" : ObjectId("52e6cdba41b11fa7c6588ab2"), "name" : "user-0", "team" : 0, "score" : 71 } { "_id" : ObjectId("52e6cdba41b11fa7c6588ab3"), "name" : "user-1", "team" : 1, "score" : 5 } > db.users.find().skip(2).limit(2); { "_id" : ObjectId("52e6cdba41b11fa7c6588ab4"), "name" : "user-2", "team" : 2, "score" : 18 } { "_id" : ObjectId("52e6cdba41b11fa7c6588ab5"), "name" : "user-3", "team" : 0, "score" : 22 }
> db.users.distinct("name"); [ "user-0", "user-1", "user-2", "user-3", "user-4", "user-5", "user-6", "user-7", "user-8", "user-9" ] =|SH|
> db.users.find({name: {$in: ["user-0","user-1"]}}); { "_id" : ObjectId("52e6cdba41b11fa7c6588ab2"), "name" : "user-0", "team" : 0, "score" : 71 } { "_id" : ObjectId("52e6cdba41b11fa7c6588ab3"), "name" : "user-1", "team" : 1, "score" : 5 } 否定 > db.users.find({name: {$nin: ["user-0","user-1"]}}); > db.users.find({"email": {$exists: true}}); 否定 > db.users.find({"email": {$exists: false}});
検索を高速にする.
張りすぎると挿入,削除が遅くなる.
張りすぎると挿入,削除が遅くなる.
> db.users.ensureIndex({score: 1}); > db.users.dropIndex({score: 1}); > db.users.getIndexes(); ユニーク指定をする > db.users.ensureIndex({name: 1},{unique: true}); > db.users.insert({name: "user-1"}); E11000 duplicate key error index: blog_app.users.$name_1 dup key: { : "user-1" }
置き換え > db.users.update({name: "user-8"},{$set: {score: 90}}); > db.users.find({name: "user-8"}); { "_id" : ObjectId("52e6cdba41b11fa7c6588aba"), "name" : "user-8", "team" : 2, "score" : 90 } NG > db.users.update({name: "user-9"},{score: 90}); こうなってしまう { "_id" : ObjectId("52e6cdba41b11fa7c6588abb"), "score" : 90 } インクリメント > db.users.update({name: "user-8"},{$inc: {score: 5}}); > db.users.find({name: "user-8"}); { "_id" : ObjectId("52e6cdba41b11fa7c6588aba"), "name" : "user-8", "team" : 2, "score" : 95 } > db.users.update({name: "user-8"},{$inc: {score: -3}}); > db.users.find({name: "user-8"}); { "_id" : ObjectId("52e6cdba41b11fa7c6588aba"), "name" : "user-8", "team" : 2, "score" : 92 } 要素の削除 > db.users.update({name: "user-7"},{$unset: {score: 1}}); > db.users.find({name: "user-7"}); { "_id" : ObjectId("52e6cdba41b11fa7c6588ab9"), "name" : "user-7", "team" : 1 } 要素のリネーム > db.users.update({name: "user-7"},{$rename: {team: "ers.find({name: "user-7"}); { "_id" : ObjectId("52e6cdba41b11fa7c6588ab9"), "myteam" : 1, "name" : "user-7" } ドキュメントが存在しない場合の扱い(upsert:第3オプション:true/false) > db.users.update({name: "user-10"},{$inc: {score: 5}},true); 一括更新(multi:第4オプション:true/false) > db.users.update({},{$inc: {score: 5}},false /* upsert */,true /* multi */); 要素のType変更 Integer -> String > db.users.find().forEach(function(obj){obj.date = "" + obj.date;db.users.save(obj);});
~%cat command.js db.users.remove({name: "user-10"}); ~%mongo blog_app command.js MongoDB shell version: 2.4.9 connecting to: blog_app %mongo blog_app MongoDB shell version: 2.4.9 connecting to: blog_app > load("command.js"); true
%mongoimport --db money -collection kakeibo -type csv -fields date,tran,name,memo,category --file data.csv
日付はUTC時間でstoreされる.
> db.posts.insert({date: new Date(2010,8,25)}); > db.posts.find(); { "_id" : ObjectId("546fb04b4fc2dea49b4a665c"), "date" : ISODate("2010-09-24T15:00:00Z") }アプリ側はJavaScript Dateオブジェクトでやりとりすればよい.
> db.posts.find({date: new Date(2010,8,25)});「The Little MongoDB Book」
コメントをかく