LokiJS.org web site
LokiJS GitHub page
Sandbox / Playground
概况
LokiJS是一个面向文档的JavaScript数据库,与MongoDB有些相似。这只是一个概述,有关完整的文档,请参阅 lokijs.org.
它支持数据集合的索引,查询和过滤。LokiJS还支持更高级的功能,例如mapReduce
,事务,并允许您实现自定义远程同步以将数据保存到服务器(或移动设备上的本地文件)。持久化到磁盘已经为CommonJS
环境(如nodejs
)实现,在移动设备上,您只需要请求文件系统并将lokijs
的serialize()
作为内容传递。
在浏览器或移动环境中,您只需要包含build/lokijs.min.js
功能
1. 面向文档
数据存储为JavaScript对象,并序列化为JSON以用于磁盘持久化。
2. 索引
您可以指定索引以加快对某些对象属性的搜索。’id’字段自动编入索引,并使用二进制搜索算法来避免for(;;)
循环变慢
3. 视图
您可以声明自定义视图函数用以返回基于复杂逻辑的结果集。
4. Map reduce
您可以声明map
和reduce
函数以检索数据库中的聚合数据。
用法示例
如果您在node.js
环境中工作,请运行 npm install lokijs
并确保调用 var loki = require('lokijs')
创建数据库:
1 | var db = new loki('Example'); |
创建一个集合,指定名称,类型,索引字段以及集合是否是事务性的:
1 | var users = db.addCollection('users', { indices: ['email'] }); |
请注意,索引和事务标志是可选参数。LokiJS
中的事务只是允许您运行操作并自动将数据库恢复到事务开始之前的阶段(如果发生错误)。
在数据库中添加一些用户:
1 | var odin = users.insert( { name : 'odin', email: 'odin.soap@lokijs.org', age: 38 } ); |
操作更新:
1 | stan.name = 'Stan Laurel'; |
动态视图 (DynamicViews) - 推荐方法:
1 | var dv = users.addDynamicView('a_complex_view'); |
‘Where’ 过滤函数:
1 | function ageView(obj){ |
Map Reduce (实时演示示例在 lokijs.org 上):
1 | function getDuration( obj ){ |
通过方法链查询 :
1 | users.chain() |
简单的命名变换 :
1 | users.addTransform('progeny', [ |
更多信息: