2、索引index 數據庫中,根據一個字段的值,來尋找一個文檔,是很常見的操做。好比根據學號來找一個學生。 這個學號,是惟一的,只要有學號,就能惟一確認一個學生的文檔。學號這個屬性,就很是適合創建索引,這樣一來,查找學生就變得簡單了。 這個語句,可以查看檢索的過程: 1db.student.find({"name":"user888"}); 學生的姓名是惟一的,爲了快速的進行檢索,因此就把name屬性創建成爲「索引」。 1db.student.createIndex({"name":1}); //1表示name從小到大排列 這樣,從此經過name尋找student文檔的時候,速度很是快。由於可以快速的從索引表中,找到這個文檔。 缺點就是插入每條數據的時候,時間變慢了,效率低了。可是換回來的就是尋找的速度快了。 索引這個屬性,全部的文檔都不能相同: 1db.members.createIndex( { "user_id": 1 }, { unique: true } );
2、Mongoose 是一個將JavaScript對象與數據庫產生關係的一個框架,object related model。操做對象,就是操做數據庫了;對象產生了,同時也持久化了。 這個思路是Java三大框架SSH中Hibernate框架的思路。完全改變了人們使用數據庫的方式。 http://mongoosejs.com/
//引包,並不須要引用mongodb這個包 var mongoose = require('mongoose'); //連接數據庫,haha是數據庫名字 mongoose.connect('mongodb://localhost/haha'); //建立了一個模型。貓的模型。全部的貓,都有名字,是字符串。「類」。建立類,數據庫自動建立了cats集合, var Cat = mongoose.model('Cat', { name: String }); //實例化一隻貓,實例化類對象 var kitty = new Cat({ name: 'Zildjian' }); //調用這隻貓的save方法,保存這隻貓,調用類的方法 kitty.save(function (err) { console.log('喵喵喵'); }); var tom = new Cat({"name":"湯姆"}); tom.save(function(){ console.log('喵喵喵'); });
上面的代碼中,沒有一個語句是明顯的操做數據庫,感受都在建立類、實例化類、調用類的方法。都在操做對象,可是數據庫同步被持久了。 mongoose的哲學,就是讓你用操做對象的方式操做數據庫。 建立一個模型 1mongoose.model("Cat",{"name" : String , "age" : Integer}); 就能夠被實例化 1var kitty = new Cat({ name: 'Zildjian' }); 而後這個實例就能夠被save。 中文博客: https://cnodejs.org/topic/51ff720b44e76d216afe34d9 mongoose首先要想明白一件事兒,全部的操做都不是對數據庫進行的。全部的操做都是對類、實例進行的。可是數據庫的持久化自動完成了。