Mongoose 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Mongoose 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Mongoose 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 JavaScript
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 罗奇奇
适用人群 未知
收录时间 2021-12-09

软件简介

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。

概述

连接到 MongoDB

首先需要定义一个连接。如果应用仅使用一个数据库,则使用mongoose.connect。如果需要创建其他连接,请使用mongoose.createConnection

connect 和 createConnection都使用 mongodb://URI,或者 host, database, port, options参数。

await mongoose.connect('mongodb://localhost/my_database');

连接后,open将在Connection实例上触发该事件。

注意: 如果本地连接失败,请尝试使用 127.0.0.1 而不是 localhost,更改本地主机名可能会出现问题。

Mongoose 会缓冲所有命令,直到它连接到数据库,这意味着不必等到它连接到 MongoDB 才开始定义模型、运行查询。

定义模型

模型是通过 Schema 接口定义的:

const Schema = mongoose.Schema;
const ObjectId = Schema.ObjectId;

const BlogPost = new Schema({
  author: ObjectId,
  title: String,
  body: String,
  date: Date
});

除了定义文档的结构和存储的数据类型之外,Schema 还处理以下定义:

以下是上述功能的一些用法:

const Comment = new Schema({
  name: { type: String, default: 'hahaha' },
  age: { type: Number, min: 18, index: true },
  bio: { type: String, match: /[a-z]/ },
  date: { type: Date, default: Date.now },
  buff: Buffer
});

// a setter
Comment.path('name').set(function (v) {
  return capitalize(v);
});

// middleware
Comment.pre('save', function (next) {
  notify(this.get('email'));
  next();
});

查看examples/schema/schema.js示例中的典型设置端到端示例。

访问模型

一旦我们通过 mongoose.model('ModelName', mySchema)定义了一个模型,就可以通过相同的函数访问它:

const MyModel = mongoose.model('ModelName');

或者一次性完成:

const MyModel = mongoose.model('ModelName', mySchema);

第一个参数是模型所针对的集合的单数名称。Mongoose 会自动查找模型名称的复数形式例如:

const MyModel = mongoose.model('Ticket', mySchema);

Mongoose 会为 tickets 集合建立模型,而不是 ticket 集合。

一旦我们有了模型,就可以实例化并保存它:

const instance = new MyModel();
instance.my.key = 'hello';
instance.save(function (err) {
  //
});

可以从同一个集合中找到文档

MyModel.find({}, function (err, docs) {
  // docs.forEach
});
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
2023/06/13 11:05

Mongoose 7.2.3 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。 Mongoose 7.2.3 正式发布,本次更新内容如下: fix(model):为了向后兼容而忽略 create() 的最后一个虚假参数#13493 #13491 #13487 类型:删除导致 typegoose 问题的通用参数 #13494 #13482 类型(聚合):允许 $mergeObjects 的对象语法 #13470 #13060 文档(连接):阐明 Connection.prototype.destroy() 与 close() 的不同之处#13475 文档...

0
3
发表了资讯
2023/03/08 07:26

Mongoose 7.0.1 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。 Mongoose 7.0.1 正式发布,本次更新内容如下: 修复(聚合):添加等待,以防止聚合执行中出现异常 #13126 修复(类型):处理 Record<string, never> ,作为 HydratedDocument TOverrides 参数的值 #13123 修复(类型):删除“更新”功能 #13120 文档(兼容性):为 mongoose 7 添加了 mongoDB 服务器兼容性 #13102 文档:更新了 Model.fi...

0
3
发表了资讯
2023/01/08 07:35

Mongoose 6.8.3 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具。Mongoose 支持 promises 和 callbacks。Mongoose 6.8.3 正式发布,本次更新内容如下: perf:提高 assignRawDocsToIdStructure 的性能,以便更快地填充大型文档 #12867 fix(model):确保 insertMany() 中验证错误的顺序一致:false 和 rawResult: true #12866 修复:避免将最终回调传递给预挂钩,因为调用回调会扰乱挂钩执行 #12836 fix(types):避免在方法、虚拟或静态设...

0
0
发表了资讯
2022/07/20 07:06

Mongoose 6.4.5 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。Mongoose 6.4.5 现已发布,具体更新内容包括: fix(model+timestamps):在 insertMany() 中设置子文档的时间戳 #12060 fix:纠正 isAtlas 检查 #12110 fix(types):修复自动 typed 模式的各种问题 #12042 fix(types):允许 AddFields 的任何值 #12096 fix(types):允许 ConcatArrays 的任意表达式 #12058 fix(types):使 $addToSet 字段可变以...

0
0
发表了资讯
2022/05/10 07:21

Mongoose 6.3.3 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。 Mongoose 6.3.3 已正式发布,带来如下改动: perf:在使用QueryCursor时避免内存泄漏,因为使用_docs时重用了填充选项 #11641 fix(types):为LeanDocument添加_id #11769 #11761 fix(model):为bulkWrite()添加skipValidation选项,以允许跳过insertOne和replaceOne的验证 #11663 fix(document):修正 $__reset() 嵌套路径下的子文档 #11672...

0
0
发表了资讯
2022/03/18 07:08

Mongoose 6.2.7 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。 Mongoose 6.2.7 正式发布,本次更新内容如下: perf(document): 如果没有要运行的验证器,则避免对每个数组元素运行验证 #11380 fix(cursor): 设置 batchSize 时正确地分批填充 #11509 fix(connection):避免在 useDb() 连接上设置 MongoClient,直到在基础连接上设置 #11445 fix(schema):使用来自不同版本的 Mongoose 模块模式时抛出更多有用...

0
3
发表了资讯
2022/01/19 07:02

Mongoose 6.1.7 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。Mongoose 6.1.7 正式发布,本次更新内容如下: fix(model): 正确处理 $push 嵌套数组 #11108 fix(update): 正确地应用时间戳更新管道 #11151 fix(document): 将数组子文档设置为自身后,正确处理数组子文档的修改 #11172 fix(index.d.ts): 允许将选项传递给 model() 代替已移除的 skipInit #11137 fix(aggregate): 允许将详细信息传递给 Aggr...

1
2
发表了资讯
2022/01/12 07:20

Mongoose 6.1.6 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。Mongoose 6.1.6 正式发布,本次更新内容如下: perf(document): 延迟创建文档事件发射器(document event emitter),用于提高内存使用率。通过一些小的优化,来改进大型数组的初始化文档 #10400 fix(model): 避免 versionKey: false 时的 bulkSave()错误 #11186 #11071 fix(model): 还原 #11079:findByIdAndUpdate(undefined) 的重大更改#...

0
3
发表了资讯
2021/12/28 07:17

Mongoose 6.1.4 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。Mongoose 6.1.4 正式发布,本次更新内容如下: fix(document): 处理subdoc下未定义嵌套文档的保存 #11110 fix(document):允许使用 create() 手动填充子文档引用 #10856 fix(populate): 处理子文档映射下的 refPath #9359 fix(update): 使用未定义的 id 调用 findByIdAndUpdate 时抛出错误 #11079 fix(mongoose):导出 ConnectionStates #1113...

0
2
发表了资讯
2021/12/10 05:50

Mongoose 6.1.0 发布,MongoDB 异步对象模型工具

Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。Mongoose 6.1.0 正式发布,本次更新内容如下: feat(populate): 支持子文档的引用 #10856 feat(document): 添加 ownerDocument() 方法到顶层文档,与子文档保持一致 #10884 fix: mongodb 驱动升级到 4.2.1 #11032 #10985 feat(schema): MongoDB 5 时间序列集合支持 timeseries 选项 #10611 feat(mongoose): 加入全局 strictPopulate 选项 #1...

0
0
发表了资讯
2021/10/24 07:59

Mongoose 6.0.12 发布,MongoDB 异步对象模型工具

Mongoose 6.0.12 正式发布,Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。 主要更新内容 fix (cursor):删除触发 closed 的逻辑,可以用 autoDestroy 功能来修复。(此功能仅支持 Node 12 及以上版本)。#10906 fix(map):支持将 flattenMaps: false 传递给 Map toJSON() ,toJSON() 在 TypeScript 中默认是 flatten 地图类型。 #10872 fix:升级 mongodb 驱动到 4.1.3 版本。 #10911 fix...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部