MongoDB是一种非关系型数据库。现在很多人在使用,也是非常火的一款非关系型数据库。(在网上也有很多关于这个数据库的负面文章,比如哪里哪里不好,等等,但是那都是人家经过使用之后得来的结论,我可不能这样想,否则会一叶障目,作为一个程序员一定要做到客观与逻辑,不可主观、武断。还是那句话,没有调查就没有发言权。我要做到精通,并已经达到全面了解一项技术的优缺点之后,再去评论一项技术的优劣,否则只能是一个愚蠢的妄言者!这是我在这接触Java一年的学习中获得的心得,在此作为一个态度标签,谨记于心!)
MongoDB给我的感觉就像是一个可以给他装任何东西的塑料袋,你可以装任何基本类型,也可以装很多复杂的类型,比如数组,没错,存一个数组是非常常见的。
另外MongoDB的结构有些有趣,collection,document,这我就不多说了,就像是一串json存储在了数据库中,事实上文档(document)的存储形式也就像是json一样,由key-value组成,中间用“:”隔开。我看了一下MongoDB的Java驱动中Document类的内部实现,其实就是用一个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修饰参数,我目前还没弄清楚意义。
documentAsMap = new LinkedHashMap<String, Object>();
documentAsMap.put(key, value);
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MongoDB关于Java的相关code,实际就是crud操作,可以参见菜鸟教程中的写法,传送门:http://www.runoob.com/mongodb/mongodb-java.html 当然,我并不是一个愿意打广告的人,但是我真的觉得菜鸟教程对于一个新人来说真的是一个非常不错的学习的网站。
以及MongoDB官网 驱动详解:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
以下则是菜鸟教程中关于MongoDB 的Java Driver的简单整理和归纳(按菜鸟教程中讲解的出现顺序):
//环境配置,略
//连接数据库 :MongoClient ----> MongoDatabase
//创建集合:MongoDatabase ----> muhtdb.createCollection("collname")
//获取集合:MongoDatabase ----> muhtdb.getCollection("collname") ----> MongoCollection<Document>
/*
* 插入文档:①创建文档
* ②创建List<Document>
* ③插入数据库集合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))
*/