ホームページ >バックエンド開発 >PHPチュートリアル >MySQL と MongoDB_PHP チュートリアルに基づいた簡単な比較表の詳細な説明

MySQL と MongoDB_PHP チュートリアルに基づいた簡単な比較表の詳細な説明

WBOY
WBOYオリジナル
2016-07-21 15:09:54759ブラウズ

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) $ 演算子は、自己の意思であり、ここで条件が提示された数のグループを表します。これは、無視されません。 、读、删

增加

复制番号

代码如下:db.collection->insert({'name' => 'caleng', 'email' => ' admin#admin.com'});

是不是灰常简单呀,对就是这么简单,它無字段的制限,你可以意起名,并插入力文章


复制番号
番号は次のとおりです: db.collection.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条大上1记录db.collection.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 重要3の记录 全更新了
db.collection.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 重要4の记录 ただ加进去了第一条
db.collection.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ) ; 5 より大きい记录 全部加进去


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() データセットの共有バージョン番号を返します

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327243.html技術記事クエリ: MySQL: SELECT * FROM ユーザー Mongo: db.user.find() MySQL: SELECT * FROM ユーザー WHERE name = 'starlee' Mongo: db.user.find({'name' : 'starlee'}) 挿入: MySQL : INOT を挿入...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。