我對使用MongoDB非常感興趣,它看起來很棒。但我來自一個完全不同的學校:關係數據庫。來自SQL用戶的關於MongoDB的問題
所以,現在我不知道怎麼會有這種情況下,可與MongoDB的:
說,我充滿了品牌的表,我有裝滿產品的另一個表。
每個產品都會有一個品牌。這很容易理解,但我仍然不明白這將如何適用於MongoDB?
我的意思是,每次添加產品時都需要重複品牌嗎?我可以做某種關係嗎?
感謝啓發我:)
我對使用MongoDB非常感興趣,它看起來很棒。但我來自一個完全不同的學校:關係數據庫。來自SQL用戶的關於MongoDB的問題
所以,現在我不知道怎麼會有這種情況下,可與MongoDB的:
說,我充滿了品牌的表,我有裝滿產品的另一個表。
每個產品都會有一個品牌。這很容易理解,但我仍然不明白這將如何適用於MongoDB?
我的意思是,每次添加產品時都需要重複品牌嗎?我可以做某種關係嗎?
感謝啓發我:)
準備:
c:\data\db\
(默認dir,不在乎現在)品牌:
db.things.save({'name': 'Ford'});
db.things.save({'name': 'Mitsubishi'});
產品:
db.things.save({'brand': 'Ford', 'name': 'Mustang'});
db.things.save({'brand': 'Ford', 'name': 'Falcon'});
db.things.save({'brand': 'Mitsubishi', 'name': 'Delica'});
db.things.save({'brand': 'Mitsubishi', 'name': 'L300'});
查詢:
db.things.find();
db.things.find({'brand': 'Ford'});
db.things.find({'brand': 'Mitsubishi'});
感謝您的答案。但是,如果我需要重命名一個品牌呢?它是否在整個數據庫中創造了許多品牌的入口,或者它只是引用了它? – TomShreds 2010-07-13 20:23:39
重命名:'db.things.update({「name」:「L300」},{「brand」:「Mitsubishi」,「name」:「L300 4WD」});'''''''對象並引用它。 每一個條目都包含ObjectId「_id」,這對我來說似乎一直如此,所以我想它會更新這個條目而不是刪除和插入它。 – dwich 2010-07-13 20:36:24
@Tom:Tom,下載並使用它,使用我的示例作爲起點,將它們複製並粘貼到mongo命令行(允許多行!)。你會更好地理解它,強烈推薦:) – dwich 2010-07-13 20:38:35
的一種方法是將它設置與此類似:
{'brand':'brand one', 'products':
[{'product name':'a fine product','price':'$50'},
{'product name':'yet another fine product','price':'$20'}]
},
{'brand':'brand two', 'products':
[{'product name':'brand two product','price':'$10'}]
}
在這種情況下,你只能有一個「表」你需要的所有信息產品(包括品牌)。我只做了一些mongodb的實驗,所以我不確定這將如何擴展。
這是一種從關係數據庫中思考的不同方式,不應在所有情況下使用nosql解決方案。
哦!好吧,所以你告訴我的是我的「關係」「應該以我的方式」對齊「我的模型?從最高到最低,所以它會這樣: 博客 - >作者 - >文章 - >評論。 這很漂亮!所以我總是有我需要的一切...感謝您的幫助:) – TomShreds 2010-07-13 20:18:18
這是一個更好的答案 – 2012-04-03 20:07:59
檢查由sriehl答案。我相信是對的 – 2012-04-03 20:09:04