node18---Mongoose

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首先要想明白一件事兒,全部的操做都不是對數據庫進行的。全部的操做都是對類、實例進行的。可是數據庫的持久化自動完成了。
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息