Nedb db.ensureIndex()

2018-07-11 19:26 更新

db.ensureIndex(options, callback)

作用:

NeDB支持索引。索引可以提高查詢速度以及保證字段的唯一性。索引可以用在任何字段,包括嵌套很深的字段。目前,索引只能用來(lái)加速基本查詢以及使用$in, $lt, $lte, $gt 和 $gte運(yùn)算符的查詢,如上find接口中示例所示。保證索引不為數(shù)組對(duì)象。方法可以在任何時(shí)候被調(diào)用,推薦在應(yīng)用啟動(dòng)時(shí)就調(diào)用(該方法是同步的,為1000個(gè)文檔添加索引僅需35ms)。

參數(shù):

fieldName(必須): 索引字段,使用“.”給嵌套的字段加索引。

unique(可選,默認(rèn)false): 字段唯一性約束。注意:唯一性約束會(huì)增加為兩個(gè)文檔中沒(méi)有定義的字段添加索引的錯(cuò)誤。

sparse(可選,默認(rèn)false): 不能為沒(méi)有定義的字段加索引。如果接受給多個(gè)文檔中沒(méi)有定義的字段添加索引,給需要該配置參數(shù)與unique一起使用。

expireAfterSeconds(可選,秒數(shù)): TTL索引,設(shè)置自動(dòng)過(guò)期時(shí)間。

刪除索引: db.removeIndex(fieldName, cb)

注意:_id字段會(huì)自動(dòng)加索引和唯一性約束,不必再為它使用ensureIndex。如果使用本地存儲(chǔ),索引也將保存在數(shù)據(jù)文件中,當(dāng)?shù)诙渭虞d數(shù)據(jù)庫(kù)時(shí),索引也將自動(dòng)被添加。如果加載一個(gè)已經(jīng)有索引的數(shù)據(jù)庫(kù),刪除索引將不起任何作用。

示例

db.ensureIndex({ fieldName: 'somefield' }, function (err) {
  // If there was an error, err is not null
});
 
// 對(duì)索引設(shè)置唯一性約束
db.ensureIndex({ fieldName: 'somefield', unique: true }, function (err) {
});
 
// Using a sparse unique index
db.ensureIndex({ fieldName: 'somefield', unique: true, sparse: true }, function (err) {
});
 
 
// 使用唯一性約束制造錯(cuò)誤,查看err的格式
db.insert({ somefield: 'nedb' }, function (err) {
  // err is null
  db.insert({ somefield: 'nedb' }, function (err) {
    // err is { errorType: 'uniqueViolated'
    //        , key: 'name'
    //        , message: 'Unique constraint violated for key name' }
  });
});
 
// 移除somefield字段的索引
db.removeIndex('somefield', function (err) {
});
 
// Example of using expireAfterSeconds to remove documents 1 hour
// after their creation (db's timestampData option is true here)
db.ensureIndex({ fieldName: 'createdAt', expireAfterSeconds: 3600 }, function (err) {
});
 
// You can also use the option to set an expiration date like so
db.ensureIndex({ fieldName: 'expirationDate', expireAfterSeconds: 0 }, function (err) {
  // Now all documents will expire when system time reaches the date in their
  // expirationDate field
});


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)