ホームページ >バックエンド開発 >PHPチュートリアル >MySQL と MongoDB_PHP チュートリアルに基づいた簡単な比較表の詳細な説明
Query:
MySQL:
SELECT * FROM user
Mongo:
db.user.find()
MySQL:
SELECT * FROM user WHERE name = 'starlee'
Mongo:
db .user.find({'name' : 'starlee'})
Insert:
MySQL:
INSERT INOT user (`name`, `age`) 値 ('starlee',25)
Mongo:
db.user.insert({'name' : 'starlee', 'age' : 25})
MySQL にフィールドを追加したい場合は、次の手順を実行する必要があります:
ALTER TABLE user….
ただし、MongoDB では必要なのは:
db.user.insert({'name' : 'starlee', 'age' : 25, 'email' : 'starlee@starlee.com'})
削除:
MySQL:
DELETE * FROM user
Mongo:
db.user.remove({})
MySQL:
DELETE FROM user WHERE age Mongo:
db.user.remove({'age' : { $lt : 30})
$gt : >= ; $lt : <= ; $ne : !=
MySQL: UPDATE user SET `age` = 36 WHERE `name` = 'starlee'
Mongo:
db.user.update({'name' : 'starlee'}, {$set : {'age' : 36} } )
MySQL:
UPDATE ユーザー SET `年齢` = `年齢` + 3 WHERE `名前` = 'スターリー'
Mongo:
db.user.update({'名前' : 'スターリー'}, { $inc : {'age' : 3}})
MySQL:
SELECT COUNT(*) FROM user WHERE `name` = 'starlee'
Mongo:
db.user.find({'name' : 'starlee'}).count()
MySQL
:SELECT * FROM ユーザー制限 10,20
Mongo:
db.user.find().skip(10).limit(20)
MySQL :
SELECT * FROM ユーザー WHERE `年齢` IN (25, 35,45)
Mongo:
db.user.find({'年齢' : {$in : [25, 35, 45]}})
MySQL:
SELECT * ユーザーから年齢順に並べ替え DESC
Mongo:
db.user.find().sort({'age' : -1})
MySQL:
SELECT DISTINCT(name) FROM ユーザー WHERE 年齢 > 20
Mongo:
db.user.distinct('name', {'age': {$lt : 20}})
MySQL:
SELECT name, sum(marks) FROMユーザー GROUP BY name
Mongo:
db.user.group({
key : {'name' : true},cond: {'name' : 'foo'},
reduce: function(obj,prev) { prev.msum += obj.marks; },initial: {msum : 0}
});
MySQL:
ユーザー WHERE 年齢 < 20
db.user.find ( 'this.age < 20', {name : 1})
ループにデータを挿入するために MongoDB を検索している人が多いことがわかりました。 MongoDB ループにデータを挿入するメソッドを以下に追加します。 for(var i. =0;i<100; i++)db.test.insert({uid:i,uname:'nosqlfan'+i});
一度に 100 個のデータが挿入され、おおよその構造は次のようになります。以下:
{ "_id" : ObjectId(" 4c876e519e86023a30dde6b8")、 "uid" : 55、 "uname" : "nosqlfan55" }
{ "_id" : "4c876e519e86023a30dde6b9") 、「uid」: 56、 “uname” : “nosqlfan56″ } { “_id” } { “_id” : ObjectId(“4c876e519e86023a30dde6bc”), “uid” : 59, “uname” : “nosqlfan59″ }
{ “_id” : ObjectId(“ 4c876e519e86023a30dde6bd”), “uid” : 60, “uname” : “ noSQLFAN60}}
単純な制御テーブル
SQL ステートメント Mongo クエリ言語ステートメント
テーブル ユーザー (A 番号、B 番号) を暗黙的に作成可能。
InSerTo 値 (1,1) db.users.insert ({a:1,b:1}) ユーザーから a,b を選択)
SELECT * ユーザーから db.users.find()
SELECT * ユーザーから WHERE age=33 db.users.find({age:33})
ユーザー WHERE から a,b を選択します。 age=33 db.users.find ({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BY name db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33 db.users.find({'age':{$gt:33}})})
SELECT * FROM users WHERE age<33 db.users.find({'age': {$lt:33}})})
SELECT * FROM users WHERE name LIKE "%Joe%" db.users.find({name:/Joe/})
SELECT * FROM users WHERE name LIKE "Joe%"データベース.users.find({name:/^Joe/})
SELECT * 年齢>33 かつ 年齢<=40 のユーザーから選択 db.users.find({'age':{$gt:33,$lte:40} })})
SELECT * FROM users ORDER BY name DESC db.users.find().sort({name:-1})
CREATE INDEX myindexname ON users(name) db.users.ensureIndex({name:1} )
CREATE INDEX myindexname ON users(name,ts DESC) db.users.ensureIndex({name:1,ts:-1})
SELECT * FROM users WHERE a=1 および b='q' db.users.find ({a:1,b:'q'})
SELECT * FROM ユーザー LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20)
SELECT * FROM users WHERE a=1 または b =2 db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )
SELECT * FROM users LIMIT 1 db .users.findOne()
EXPLAIN SELECT * FROM users WHERE z= 3 db.users.find({z:3}).explain()
ユーザーから姓を DISTINCT 選択します db.users.distinct('姓')
ユーザーから COUNT(*y) を選択しますdb.users.count()
SELECT COUNT(*y) FROM users where AGE > 30 db.users.find({age: {'$gt': 30}}).count()
ユーザーからのSELECT COUNT(AGE) db.users.find({age: {'$exists': true}} ).count()
UPDATE users SET a=1 WHERE b='q' db.users.update({b:'q'}, {$set:{a:1}}, false, true)
UPDATE users SET a=a+2 WHERE b='q' db.users.update({b:'q'}, {$inc:{a:2}}, false, true)
ユーザーから削除 WHERE z="abc " db.users.remove({z:'abc'});
############################## ##################
一、操作符
操作符相信大家肯定都知道了、就是等以下、大以上、小以下、不等、大以上等、に等しいですが、mongodb ではこれらのオペレータを直接使用することはできません。mongodb のオペレータは次のように表されます。 (大より)
(2) $lt < (小以下)
(3) $gte >= (大以上等以上)
(4) $lt <= (小以下等以上)
(5) $ne != (不等以下)
(6) $in in (包含)
(7) $nin 入っていない(含まれていない)
(8) $exists 存在する(字段の有無)
(9) $inc 对一数字字段フィールド增加値
(10) $set はsqlのsetに相当field = value
(11) $unset 就は删除字段
(12) $push 値をフィールド里面に追加する,フィールド必定是数组类型才行,如果フィールド不存在,会新增一数组类型加进去
(13) ) $pushAll 同じ$push、ただ一度だけ複数の値を一つの数組のフィールド内に追加できます
(14) $addToSet 数組内に一つの値を追加し、この値が数組内にない場合のみ追加できます。
(15) $pop 删除最後の一个值:{ $pop : { field : 1 } }删除第一个值:{ $pop : { field : -1 } }注意,只能删除一个值,也就是说只能用1または-1, mongodb 1.1以降のバージョンでは、
(16) $pull 数値グループフィールド内から値に等しいものを1つ削除できます
(17) $pullAll 同じ$pull、一度に数グループを削除できます内部の複数の値
(18) $ 演算子は、自己の意思であり、ここで条件が提示された数のグループを表します。これは、無視されません。 、读、删
增加
复制番号
复制番号
Query
db.collection.find(array('name' => 'bailing'), array('email'=> 'email@ qq.com'))
db.collection.findOne(array('name' => 'bailing'), array('email''email@qq.com'))
私は2つの異なる書き方がありますが、実は料理と同じで、調味料を変えると揚げ物も味が変わります。この2つの調味料のそれぞれの働きの違いをご紹介します。
findOne() はドキュメント オブジェクトのみを返し、find() はコレクション リストを返します。
つまり、たとえば、特定のデータの詳細情報だけを確認したい場合は、 findOne(); を使用できます
ニュースリストなどの特定の情報セットをクエリしたい場合は、 find( ); を使用できます
それでは、このリストを並べ替えたいと誰もが思うと思いますが、問題ありません、mongodb が心を込めて対応します
db.collection .find() .sort({age:1}); //年齢順に並べる
db.collection.find().sort({age:-1}); //年齢順に並べる
db.collection.count() ; //データの総数を取得します
db.collection.limit(1) //データの開始位置を取得します
db.collection.skip(10);データの位置
//このようにして、10個のデータの取得とソート操作を実装しました。
Delete
削除にはremove()とdrop()の2つの操作があります
db.collection.remove({"name",'jerry '} ) //特定のデータを削除
db.collection.drop() //コレクション内のすべてのデータを削除
個別の操作
db。 user.distinct(' 名前', {' 年齢': {$lt : 20}})
2. SQL に似た MongoDB データ操作ステートメントに精通する
データベース操作構文
mongo --path
db.AddUser(username,password) ユーザーを追加する
db.auth(usrename,password) データベース接続検証を設定する
db.cloneDataBase(fromhost) ターゲットサーバーからデータベースのクローンを作成します
db.commandHelp(name) コマンドのヘルプを返します
db.copyDatabase(fromdb,todb,fromhost) データベースをコピーします fromdb---ソースデータベース名, todb --- ターゲットデータベース名、fromhost--- ソースデータベースサーバーアドレス
db.createCollection(name,{size:3333,capped:333,max:88888}) テーブルと同等のデータセットを作成します
db.currentOp( ) 現在のライブラリの現在の操作をキャンセルします
db.dropDataBase() 現在のデータベースを削除します
db.eval(func,args) サーバー側でコードを実行します
db.getCollection(cname) データコレクションを取得します。同じ使用法: db ['cname'] または db .cname
db.getCollenctionNames() すべてのデータコレクションの名前リストを取得します
db.getLastError() 最後のエラーメッセージを返します
db.getLastErrorObj() 最後のエラーオブジェクトを返します
db.getMongo( ) 現在のサーバーの Connection オブジェクトを取得します サーバー接続オブジェクトを取得します
db.getMondo().setSlaveOk() この接続がレプリカ ペアの非マスター メンバーから読み取ることを許可します
db.getName() 操作時にデータベースの名前を返します
db.getPrevError() トップに戻る エラー オブジェクト
db.getProfilingLevel() ? どのレベル
db.getReplicationInfo() ? どのような情報
db.getSisterDB(name) がこのサーバーと同じサーバーにある
db.killOp () 現在のライブラリの現在の操作
db.printCollectionStats() は、現在のライブラリのデータセットのステータスを返します
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus() は、現在のデータベースは共有データベースです
db.removeUser(username) userを削除します
db.repairDatabase() 現在のデータベースを修復します
db.resetError()
db.runCommand(cmdObj) cmdObjが文字列の場合はデータベースコマンドを実行します。 into {cmdObj:1}
db.setProfilingLevel(level) 0=off,1=slow,2=all
db.shutdownServer() 現在のサービスプログラムをシャットダウン
db.version() 現在のプログラムのバージョン情報を返す
データセット (テーブル) 操作構文
db.linlin.find({id:10}) は、linlin データセット ID=10 のデータセットを返します
db.linlin.find({id:10}).count () は、linlin データセット ID=10 のデータの総数を返します
db.linlin. find({id:10}).limit(2) は、linlin データセット ID=10 の 2 番目の項目から始まるデータセットを返します
db.linlin.find({id:10}).skip(8) returns linlinデータセットID=10のデータセットは0から8番目のデータセットです
db.linlin.find({id:10}) .limit(2).skip(8) linlin データセット ID=1= 2 番目から 8 番目のデータセットを返す
db.linlin.find({id:10}).sort() ソートされたデータを返すlinlinデータセットのID=10で設定
db.linlin.findOne([query] ) 条件を満たすデータを返す
db.linlin.getDB() このデータセットが属するデータベース名を返す
db .linlin.getIndexes() いくつかのデータセットのインデックス情報を返します
db.linlin.group({key:... .,initial:...,reduce:...[,cond:...]})
db.linlin.mapReduce(mayFunction,reduceFunction,
db.linlin.remove(query) in データセットからデータの一部を削除します
db.linlin.renameCollection(newName) 一部のデータセット名の名前を変更します
db.linlin.save(obj) データセットにデータを挿入します
db.linlin.stats() このデータセットのステータスを返します
db.linlin.storageSize() はこのデータセットのストレージサイズを返します
db .linlin.totalIndexSize() はこのデータ セットのインデックス ファイル サイズを返します
db.linlin.totalSize() はこれらのデータ セットの合計サイズを返します
db.linlin. update(query,object[,upsert_bool])このデータセット内のデータ
db.linlin.validate() このデータセットを検証します
db.linlin.getShardVersion() データセットの共有バージョン番号を返します