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 });