前言
在现代的 Web 开发中,数据库是一个至关重要的部分。MongoDB 是一种非关系型数据库,以其高性能、高可拓展性、高应用性广泛被应用在各个领域,特别是在大数据场景下。
在 Node.js 的生态系统中,有一款非常成熟的 MongoDB 库——mongoose。但是,对于一些需要非常简单、易于学习的 MongoDB 操作库来说,我们可以使用 burak-mongo——一款非常轻量级的 Node.js MongoDB 库。
在本篇文章中,我将详细地介绍如何使用 burak-mongo 库,并给出实际示例代码以便读者更好地掌握技巧。
要求
在开始使用 burak-mongo 之前,我们需要先满足以下的要求:
- 确保你已经安装了 Node.js 并且版本大于 8.0。
- 确保你已经安装了 MongoDB,并开启了 MongoDB 的服务。本文不再赘述安装 MongoDB 的步骤。
安装
在项目中使用 burak-mongo,可以选择全局安装或局部安装,这里我们以局部安装为例:
npm install burak-mongo --save
连接 MongoDB
首先,我们需要建立与 MongoDB 的连接。在 burak-mongo 中,我们需要定义连接字符串和数据库名:
-- -------------------- ---- ------- --- ---------- - ----------------------- --- ------ - - ----------- ----------------------------- --------- -------- -- --- ---------- - ----------------------------------- ------------- - ------- ----------------------- ------------ ---- ----------------------- ---------- ---
连接字符串里的 host、port 和 dbname 都需要根据实际情况填写。连接成功后,我们可以在回调函数中对连接失败和成功做出相应的处理。
定义模型
在 MongoDB 中,我们通常需要定义模型。在 burak-mongo 中,使用Schema
和 Model
两个类来实现模型的定义和操作。
首先,我们先介绍 Schema
类,该类的作用是定义集合内每个文档的结构,它声明了文档的字段、类型、默认值、键等信息。一个集合可以有多个模型(Model
)和多个文档,而一个模型可以定义一个或多个 Schema
,每一个 Schema
实例定义了一组文档的属性。
定义一个 Schema
非常简单,只需要使用 burakMongo.Schema
静态方法即可:
var Schema = burakMongo.Schema; var userSchema = new Schema({ name: String, age: Number });
这里我们定义了一个名为 userSchema
的 Schema
,其包含了两个属性,分别为 name
和 age
。其中, name
属性的类型为 String,age
属性的类型为 Number。
建立 Model
建立 Model
的首要准备就是建立 MongoDB 集合,并使用 Schema
类定义该集合下的所有文档结构。建立 Model
的方法为调用 createModel
静态方法,传入一个字符串作为集合的名称,连同先前定义的 Schema
实例:
var userModel = connection.createModel('User', userSchema);
这里我们建立了一个名为 User
的集合,并使用刚刚定义的 userSchema
做为文档结构。
新建文档
当我们有了一个 Model
、已经连接到 MongoDB 并建立好集合时,我们就可以开始进行数据操作了。首先,我们可以使用新建一个文档的方法,创建一个新的 User
对象,并调用 save 操作将其保存到 MongoDB 中:
var user = new userModel({name: 'Tom', age: 23}); user.save(function (err) { if (err) { console.log(err); } else { console.log('saved!'); } });
这里我们建立了一个 name 为 Tom、age 为 23 的 User
对象,并立即存储到了 MongoDB 中。当调用 save
操作时,会进行一次异步操作,异步操作完成后才会调用回调函数。
当仅仅是新建一条数据,并且 save
操作不需要进行异步的操作时,实际上 burak-mongo 还提供了一种简便方法,即调用 Model
构造函数中的 create
方法:
userModel.create({name: 'Tom', age: 23}, function (err, user) { if (err) { console.log(err); } else { console.log('saved!'); }; });
这里我们依照示例内容在第二个参数中定义了列出处理结果的回调函数。
查找文档
burak-mongo 也非常易于操作查找文档,我们可以使用 find
方法进行查找:
userModel.find({name: 'Tom'}, function(err, users) { console.log(users); });
在这里我们查找了所有 name
属性为 'Tom' 的文档。可以看到 burak-mongo 返回的是一个数组,包含了所有满足查找条件的 User
对象的实例。
这里我们使用了 burak-mongo 的链式方法。通过反复调用链式方法,我们可以进一步精确地定位我们要查找的文档。
更新文档
在 burak-mongo 中,更新一条文档的操作需要使用 update
方法:
userModel.update({name: 'Tom'}, {age: 30}, function(err, raw) { if (err) console.log(err); else { console.log('update successfully'); } });
这里我们更新了所有满足查找条件 name
为 'Tom' 的 User
对象,并将其属性 age
修改为 30。
需要注意的是,使用 update
方法不会立即更新数据库中的值。我们需要调用 save
方法,将修改后的 User
对象保存到 MongoDB 中:
-- -------------------- ---- ------- ------------------------ ------- ------------- ----- - -------- - --- ----------------------- - ------- ----------------- ----- ------------------- --------------- - --- ---
findOne
方法可以用来查询文档并返回一个结果集中的第一个结果。
删除文档
最后,我们介绍在 burak-mongo 中如何删除文档。使用 remove
方法即可:
userModel.remove({name: 'Tom'}, function(err) { if (err) console.log(err); else { console.log('remove successfully'); } });
这里我们删除所有满足条件 name
为 'Tom' 的 User
对象。
结束
本文已经为大家详细讲解了 burak-mongo 的使用方法,希望能对读者的学习和开发有所帮助。在实际使用中,我们还可以使用 burak-mongo 的一些其他高级使用方法,例如事务操作、分页查询等等。
如果读者对 burak-mongo 感兴趣,可以通过 npm 了解更多,并且建议查看 burak-mongo 的官方文档:https://github.com/burakson/mongo。
示例代码:https://github.com/burakson/mongo/blob/master/demo.js
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066c8fccdc64669dde5734