MySQL与MongoDB设计实例对比
生活随笔
收集整理的這篇文章主要介紹了
MySQL与MongoDB设计实例对比
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
MySQL與MongoDB設(shè)計實(shí)例對比
2011年06月15日14:06?來源:huoding 作者:老王 編輯:胡銘婭?評論:0條如果使用MongoDB的話,應(yīng)該如何存取數(shù)據(jù)呢?
如果使用MongoDB的話,雖然理論上可以采用和MySQL一樣的設(shè)計方案,但那樣的話就顯得無趣了,沒有發(fā)揮出MongoDB作為文檔型數(shù)據(jù)庫的優(yōu)點(diǎn),實(shí)際上使用MongoDB的話,和MySQL相比,形象一點(diǎn)來說,可以合二為一:
?
db.getCollection("mobiles").ensureIndex({"params.name":?1,
"params.value":?1
});
db.getCollection("mobiles").insert({
"_id":?1,
"name":?"ME525",
"brand":?"摩托羅拉",
"params": [
{"name":?"待機(jī)時間",?"value":?200},
{"name":?"外觀設(shè)計",?"value":?"直板"}
]
});
db.getCollection("mobiles").insert({
"_id":?2,
"name":?"E7",
"brand":?"諾基亞",
"params": [
{"name":?"待機(jī)時間",?"value":?500},
{"name":?"外觀設(shè)計",?"value":?"滑蓋"}
]
});
如果想查詢待機(jī)時間大于100小時,并且外觀設(shè)計是直板的手機(jī),需要按照如下方式查詢:
?
db.getCollection("mobiles").find({"params": {
$all: [
{$elemMatch: {"name":?"待機(jī)時間",?"value": {$gt:?100}}},
{$elemMatch: {"name":?"外觀設(shè)計",?"value":?"直板"}}
]
}
});
注:查詢中用到的$all,$elemMatch等高級用法的詳細(xì)介紹請參考官方文檔中相關(guān)說明。
MySQL需要多個表,多次查詢才能搞定的問題,MongoDB只需要一個表,一次查詢就能搞定,對比完成,相對MySQL而言,MongoDB顯得更勝一籌,至少本例如此
轉(zhuǎn)載于:https://blog.51cto.com/ace105/805785
總結(jié)
以上是生活随笔為你收集整理的MySQL与MongoDB设计实例对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阴阳师电影(说一说阴阳师电影的简介)
- 下一篇: 【转】EXC_BAD_ACCESS问题在