MongoDB学习手记
MongoDB是一種非關系型數(shù)據(jù)庫。現(xiàn)在很多人在使用,也是非常火的一款非關系型數(shù)據(jù)庫。(在網(wǎng)上也有很多關于這個數(shù)據(jù)庫的負面文章,比如哪里哪里不好,等等,但是那都是人家經(jīng)過使用之后得來的結論,我可不能這樣想,否則會一葉障目,作為一個程序員一定要做到客觀與邏輯,不可主觀、武斷。還是那句話,沒有調查就沒有發(fā)言權。我要做到精通,并已經(jīng)達到全面了解一項技術的優(yōu)缺點之后,再去評論一項技術的優(yōu)劣,否則只能是一個愚蠢的妄言者!這是我在這接觸Java一年的學習中獲得的心得,在此作為一個態(tài)度標簽,謹記于心!)
MongoDB給我的感覺就像是一個可以給他裝任何東西的塑料袋,你可以裝任何基本類型,也可以裝很多復雜的類型,比如數(shù)組,沒錯,存一個數(shù)組是非常常見的。
另外MongoDB的結構有些有趣,collection,document,這我就不多說了,就像是一串json存儲在了數(shù)據(jù)庫中,事實上文檔(document)的存儲形式也就像是json一樣,由key-value組成,中間用“:”隔開。我看了一下MongoDB的Java驅動中Document類的內部實現(xiàn),其實就是用一個LinkedHashMap來封裝的:
public class Document implements Map<String, Object>, Serializable, Bson {
? ? private final LinkedHashMap<String, Object> documentAsMap;
? ? /**? ? ?* Creates an empty Document instance.
? ? ?*/
? ? public Document() {
? ? ? ? documentAsMap = new LinkedHashMap<String, Object>();
? ? }
? ? /**
? ? ?* Create a Document instance initialized with the given key/value pair.
? ? ?*
? ? ?* @param key ? key
? ? ?* @param value value
? ? ?*/
? ? public Document(final String key, final Object value) { ? ? ? ? ? ?//-----這里為什么用final修飾參數(shù),我目前還沒弄清楚意義。
? ? ? ? documentAsMap = new LinkedHashMap<String, Object>();
? ? ? ? documentAsMap.put(key, value);
? ? }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MongoDB關于Java的相關code,實際就是crud操作,可以參見菜鳥教程中的寫法,傳送門:http://www.runoob.com/mongodb/mongodb-java.html ?當然,我并不是一個愿意打廣告的人,但是我真的覺得菜鳥教程對于一個新人來說真的是一個非常不錯的學習的網(wǎng)站。
以及MongoDB官網(wǎng) 驅動詳解:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
以下則是菜鳥教程中關于MongoDB 的Java Driver的簡單整理和歸納(按菜鳥教程中講解的出現(xiàn)順序):
//環(huán)境配置,略
//連接數(shù)據(jù)庫 :MongoClient ----> MongoDatabase?
//創(chuàng)建集合:MongoDatabase ----> muhtdb.createCollection("collname")
//獲取集合:MongoDatabase ----> muhtdb.getCollection("collname") ----> MongoCollection<Document>
/*
* 插入文檔:①創(chuàng)建文檔?
* ②創(chuàng)建List<Document>?
* ③插入數(shù)據(jù)庫集合usercoll.insertMany/usercoll.insertOne
* ? ? ? MongoCollection<Document> ----> usercoll.insertMany ??
*/
/*
* 檢索所有文檔:①獲取迭代器FindIterable<Document>?
* MongoCollection<Document> ----> user.find() ---->FindIterable<Document>
* ②獲取游標MongoCursor<Document>
* FindIterable<Document> ----> findIterable.iterator() ----> MongoCursor<Document>
* ③通過游標遍歷檢索出的文檔集合
* MongoCursor<Document>:cursor.hasNext()、cursor.next()
*/
?
/*
* 更新文檔:MongoCollection<Document> ---->
* updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)))
*/
/*
*刪除第一個文檔:MongoCollection<Document> ----> user.deleteOne(Filters.eq("likes", 200))
*刪除全部符合條件的文檔:MongoCollection<Document> ----> user.deleteMany(Filters.eq("likes", 200))
*/
總結
以上是生活随笔為你收集整理的MongoDB学习手记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat运行三种模式:http-bi
- 下一篇: Apache工具包方法——Hex.enc