LinvoDB - 嵌入式文档数据库


MIT
跨平台
JavaScript

软件简介

LinvoDB 是一个 Node.js/NW.js
的嵌入式数据库引擎,类似 MongoDB 和类 Mongoose 数据库,提供类似的接口,基于
NeDB 开发。

特性:

  • 类 MongoDB 的查询引擎

  • 基于 LevelUP 的持久化,可选择不同后端

  • NW.js 友好 - JS-only backend is Medea

  • 高性能 - steady performance unaffected by DB size - queries are always indexed

  • 自动索引

  • Live queries - make the query, get constantly up-to-date results

  • Schemas - built-in schema support

  • Efficient Map / Reduce / Limit

示例代码:

var LinvoDB = require("linvodb3");
var modelName = "doc";
var schema = { }; // Non-strict always, can be left empty
var options = { };
// options.filename = "./test.db"; // Path to database - not necessary 
// options.store = { db: require("medeadown") }; // Options passed to LevelUP constructor 
var Doc = new LinvoDB(modelName, schema, options); // New model; Doc is the constructor

LinvoDB.dbPath // default path where data files are stored for each model
LinvoDB.defaults // default options for every model

插入数据:

// Construct a single document and then save it
var doc = new Doc({ a: 5, now: new Date(), test: "this is a string" });
doc.b = 13; // you can modify the doc 
doc.save(function(err) { 
    // Document is saved
    console.log(doc._id);
});

// Insert document(s)
// you can use the .insert method to insert one or more documents
Doc.insert({ a: 3 }, function (err, newDoc) {
    console.log(newDoc._id);
});
Doc.insert([{ a: 3 }, { a: 42 }], function (err, newDocs) {
    // Two documents were inserted in the database
    // newDocs is an array with these documents, augmented with their _id

    // If there's an unique constraint on 'a', this will fail, and no changes will be made to the DB
    // err is a 'uniqueViolated' error
});

// Save document(s)
// save is like an insert, except it allows saving existing document too
Doc.save([ doc, { a: 55, test: ".save is handy" } ], function(err, docs) { 
    // docs[0] is doc
    // docs[1] is newly-inserted document with a=55 and has an assigned _id

    // Doing that with .insert would throw an uniqueViolated error for _id on doc, because it assumes all documents are new
});