range-index

levelup based range index

range

level based range index

npm install [--save/--save-dev] range-index
IDNAMEAGESEX
1Divina Ventimiglia7F
2Nakisha Robuck54F
3Amira Markus18F
4Mohamed Kincannon60M
5Juana Ardon23F
6Hyon Davie60F
7Estell Cromer18F
8Jacob Neeley13M
9Carlene Weatherman42F
10Carie Markland7F
AGEID
71, 10
138
183, 7
235
429
542
604, 6

as seen in Database Indexes for The Inquisitive Mind

DOCUMENTCOUNTRIES
AAustralia, Canada, Portugal
BCanada, Portugal, Togo
CAlgeria, Canada, Portugal, Togo
DAlgeria, Canada, Togo
ECanada, Togo
FTogo
COUNTRYDOCUMENTS
AlgeriaC, D
AustraliaA
CanadaA, B, C, D, E
PortugalA, B, C
TogoB, C, D, E, F
var range = require('range-index');
var db = level('path/to/location', {
  createIfMissing: true,
  valueEncoding: 'json',
  keyEncoding: 'binary' 
})
 
var age = range(db);
age.put(18, 7, function (e) {
  if(e) throw e;
  console.log('index saved successfully');
});

countries.put('Portugal', 'A', function (e) {
  if(e) throw e;
  console.log('index saved successfully');
});
var user = age.get(18);
 
user.on('data', function (data) {
  assert(data.value == [3, 7]);
  assert(data.key == 18);
});
 
user.on('error', function (e) {
  throw e;
});
 
user.on('close', function () {
  console.log('Stream closed')
});
 
user.on('end', function () {
  console.log('Stream closed')
});

with kordon/cursor:

age.get(18).pipe(cursor.all(function (keysvaluesdata) {
  assert.equal(e,  null);
  assert(values[0] == [3, 7]);
  assert(keys[0] == 18);
}));

countries.get('Portugal').pipe(cursor.all(function (keysvaluesdata) {
  assert.equal(e,  null);
  assert(values[0] == ['A', 'B', 'C']);
  assert(key[0] == 'Portugal');
}));
age.all().pipe(cursor.each(function (keyvaluedata) {
  console.log('Age: ', key, 'ID\'s: ', value);
}, function () {
  // end 
}));
age.from(54).pipe(cursor.each(function (keyvaluedata) {
  console.log('Age: ', key, 'ID\'s: ', value);
}, function () {
  // end 
}));

returned indexes:

AGEID
542
604, 6

countries.from('P').pipe(cursor.each(function (keyvaluedata) {
  console.log('Country: ', key, 'Documents: ', value);
}, function () {
  // end 
}));

returned indexes:

COUNTRYDOCUMENTS
PortugalA, B, C
TogoB, C, D, E, F
age.between(13, 23).pipe(cursor.each(function (keyvaluedata) {
  console.log('Age: ', key, 'ID\'s: ', value);
}, function () {
  // end 
}));

returned indexes:

AGEID
138
183, 7
235

countries.between('A', 'C').pipe(cursor.each(function (keyvaluedata) {
  console.log('Country: ', key, 'Documents: ', value);
}, function () {
  // end 
}));

returned indexes:

COUNTRYDOCUMENTS
AlgeriaC, D
AustraliaA
age.until(18).pipe(cursor.each(function (keyvaluedata) {
  console.log('Age: ', key, 'ID\'s: ', value);
}, function () {
  // end 
}));

returned indexes:

AGEID
71, 10
138
183, 7

countries.until('P').pipe(cursor.each(function (keyvaluedata) {
  console.log('Country: ', key, 'Documents: ', value);
}, function () {
  // end 
}));

returned indexes:

COUNTRYDOCUMENTS
AlgeriaC, D
AustraliaA
CanadaA, B, C, D, E
age.del(18, 7, function (e) {
  if(e) throw e;
  console.log('index deleted successfully');
});

countries.del('Portugal', 'A', function (e) {
  if(e) throw e;
  console.log('index deleted successfully');
});

MIT