Example
insert user username @ dota password = 1234567 title ? SDEII skill * c,js,go
> OK
insert user username @ war3 password = abcdefg title ? SDEI skill * c,js
> OK
find user 0 -1 username = * title ? SDEI skill = *
1) 1
2) user:war3
3) war3
4) SDEI
5) c,js
Node.js OnceDB client
(async() => {
const util = require('util')
const oncedb = require('oncedb')()
// Priomisify interface
const upsert = util.promisify(oncedb.upsert).bind(oncedb)
const select = util.promisify(oncedb.select).bind(oncedb)
// Define schema
oncedb.schema('blog', { id: 'id;sequence', user: 'group', keys: 'keywords', visit: 'sort' })
// Add testing data
await upsert('blog', { user: 'fire', keys: 'c,java,js', visit: 3899 })
await upsert('blog', { user: 'fire', keys: 'php,c,js', visit: 1000 })
await upsert('blog', { user: 'ice', keys: 'java,c,node.js', visit: 1200 })
await upsert('blog', { user: 'ice', keys: 'node.js,php,c', visit: 3206 })
// General index search
let blog1 = await select('blog', { user: 'fire', keys: 'php' })
// Full-text search
let blog2 = await select('blog', { keys: 'js', visit: { '>=': 3000, '<=': 4000 } })
// Search using index
let blog3 = await select('blog', { keys: 'js' }, { sort: [ 'visit', 3000, 4000 ] })
console.log('blog1:', blog1)
console.log('blog2:', blog2)
console.log('blog3:', blog3)
})();
Output:
blog1: [{
_key: 'blog:2',
id: '2',
user: 'fire',
keys: [ 'php', 'c', 'js' ],
visit: '1000'
}]
blog2: [{
_key: 'blog:1',
id: '1',
user: 'fire',
keys: [ 'c', 'java', 'js' ],
visit: '3899'
}]
blog3: [{
_key: 'blog:1',
id: '1',
user: 'fire',
keys: [ 'c', 'java', 'js' ],
visit: '3899'
}]