需要安装扩展库python-docx、openpyxl和python-pptx,代码不适用于Office2003和更早的版本。 参考代码: ? 测试xlsx文件内容: ? 测试docx文件内容: ?
这篇文章比较简单,在这个专题的一开始,我们探究了对象和文档之间的关系,我们只是专注于构建模型,忽略了跳过我们如何在图表阶段之外处理关系。那么这一小篇文章我们就来简单的说一下这个问题。...我们需要考虑两个单独的操作。在查询和加载文档期间获取相关信息可以使用Include调用来完成,这时一个非常常用的功能,因为他可以减少请求服务端的次数。...第二个操作是查询,也就是说当想根据相关文档的属性查询特定文档。例如前面文章所说的幼儿园的例子,查询母亲叫刘妈妈的孩子,由于子文档不再包含父级文档的名称,那么我们将如何搜索它呢?...因此使用这个功能通过母亲的名字查询孩子非常容易。索引功能将在索引专题中进行进一步讲解。我在这里提到它,是因为知道它的存在会影响我们对数据建模的方式,在决定如何对相关数据进行建模时,它可以有很大的帮助。...但是最终决策几乎总是归结为我们是想要数据的时间点视图还是当前值。对于第一个选项,我们通常会将值从源复制到其自己的文档中,对于第二个选项,我们可以在索引和查询以及从服务器获取数据时使用。
同时它也是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档...安装 引用 前面我们已经认识了Mongoose,也了解了MongoDB,回顾一下:MongoDB是一个对象数据库,是用来存储数据的;Mongoose是封装了MongoDB操作的一个对象模型库,是用来操作这些数据的...引用mongoose: var mongoose = require("mongoose"); 3....一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档。)...我们想要操作MongoDB数据,那就得先要具备上面所说的包含数据的“文档”,文档又是什么意思呢,请看如下介绍。
1.2 准备工作 1.首先你必须安装MongoDB和NodeJS 2.在项目只能够创建一个数据库连接,如下: var mongoose = require('mongoose'); //引用...,但不能更新主键,这就是为什么要删除主键的原因。 ...remove方法 4.Sub Docs 如同SQL数据库中2张表有主外关系,Mongoose将2个Document的嵌套叫做Sub-Docs(子文档) 简单的说就是一个Document嵌套另外一个... 如果children是parent的子文档,可以通过如下方法查询到children var child = parent.children.id(id); 4.2 新增、删除、更新 子文档是父文档的一个属性...,因此按照属性的操作即可,不同的是在新增父类的时候,子文档是会被先加入进去的。
该 versionKey 是每个文档首次创建时,由 mongoose 创建的一个属性。包含了文档的内部修订版。此文档属性是可配置的。默认值为__v。...这里我主要说一下versionKey和timestamps: versionKey(上文有提到) 是 Mongoose 在文件创建时自动设定的。这个值包含文件的内部修订号。...// 使用 all 查找同时存在 18 和 20 的 documentModel.find({ age: { 使用操作符 精确查找 查找全部 projection 指定要包含或排除哪些 document...要删除第一个匹配条件的文档,可将 single 选项设置为 true。...看完Models,最后让我们来看下在实战中比较有用的Populate 联表(Populate) Mongoose 的 populate() 可以连表查询,即在另外的集合中引用其文档。
、集群方式连式等等,这里解释了,用着了时候自行查询API文档 http://mongoosejs.com/docs/api.html#index-js Schema schema是mongoose... 第2个参数可以设置要查询输出的字段,比如改成 var User = require("....,分页原理用过其它数据库的都知道,分页用到的函数和mysql的比较类似 上面我用到sort(),这个是排序规则,就不单讲了!...mongoose操作基本入门大致就是这些,自已试一下,入门完全没问题,并且比node-mongodb-native还是要简单明了一些, 在node.js中操作数据库,如果逻辑相对复杂时,大量的回调嵌套还是比较郁闷的...,下一篇于mongoose操作多逻辑组合回调嵌套的问题给出一种方案^_^!
Mongoose本质是一个对象文档模型(ODM)库, 他对Node原生的MongoDB模块进行了一部优化封装,并且提供了更多的功能。...#Mongoose的优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中的文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...Node原生的MongoDB驱动更容易 #使用Mongoose 下载安装mongoose模块 cnpm install mongoose --save 引用mongoose: var mongoose...我们想要操作MongoDB数据,那就得先要具备上面所说的包含数据的“文档”,文档又是什么意思呢,请看如下介绍。...}else{ throw err; } }); #mongoose 插入和查询 mongoose查找数据的一些方法: https://mongoosejs.com/docs/api.html
// mongoose.Schema() 是一个构造函数,要new一个实例对象 //2、设定集合规则 const courseSchema = new mongoose.Schema({ name...4.查询文档 find()方法 返回一组文档 // 根据条件查找文档(条件为空则查找所有文档) Course.find().then(result => console.log(result)) //...返回爱好包含敲代码的文档 // User.find({ // hobbies: { // $in: ['敲代码'] // } // }).then(result =>...// 删除单个文档 如果条件包含多个文档,默认删除符合条件的第一个文档 返回删除的文档 User.findOneAndDelete({ _id: '5c09f1e5aeb04b22f8460965...查询条件}, {要更改的值}).then(result => console.log(result)) // 更新单条文档 如果条件满足多个文档,也是默认只更新第一个 User.updateOne
但是始终只会展示两层树的评论。 当然,也可以像掘金这样进行嵌套多层树的结构展示。臣妾觉得嵌套得太深~ 实际完成的效果如下: 体验站点请戳 jimmyarea.com 。...后端 使用的技术: mongodb 数据库,这里我使用到了其ODM mongoose koa2 一个Node框架 pm2 进程守卫 apidoc 用来生成接口文档(如果你留意体验站点,右上角有一个..."文档"的链接,链接的内容就是生成的文档内容) 这里的搭建就不进行介绍了,可以参考koa2官网配合百度解决~ 其实,本质上还是增删改查的操作。...首先,我们对自己要存储的数据结构schema进行相关的定义: const mongoose = require('mongoose') const Schema = mongoose.Schema /...('Message', MessageSchema) 这里有个注意的点userId字段,这里我直接关联了注册的用户。
// mongoose.Schema() 是一个构造函数,要new一个实例对象 //2、设定集合规则 const courseSchema = new mongoose.Schema({ name...在项目根目录下输入以下命令导入 mongoimport -d 数据库名称 -c 集合名称 --file 要导入的数据文件 4.查询文档 find()方法 返回一组文档 // 根据条件查找文档(条件为空则查找所有文档...返回爱好包含敲代码的文档 // User.find({ // hobbies: { // $in: ['敲代码'] // } // }).then(result =>...// 删除单个文档 如果条件包含多个文档,默认删除符合条件的第一个文档 返回删除的文档 User.findOneAndDelete({ _id: '5c09f1e5aeb04b22f8460965...查询条件}, {要更改的值}).then(result => console.log(result)) // 更新单条文档 如果条件满足多个文档,也是默认只更新第一个 User.updateOne
文档内嵌与引用模式 MongoDB 是一种文档对象模型,使用起来很灵活,它的文档结构分为 内嵌和引用 两种类型。...引用模型是一种规范化的数据模型,通过主外键的方式来关联多个文档之间的引用关系,减少了数据的冗余,在使用这种数据模型中就要用到关联查询,也就是本文我们要讲解的重点。..., "name":"你不知道的JavaScript(下卷)", } ] 定义 Schema 使用 Mongoose 第一步要先定义集合的 Schema。...,经过 lookup 阶段的处理,输出的新文档中会包含一个新生成的数组列。...MongoDB 官方文档 #lookup-aggregation[2] Mongoose Virtual 和 populate 实现 Mongoose 的 populate 方法默认情况下是指向的要关联的集合的
()连接MongoDB,默认端口27017 操作缓存 就是说不必等待上面的connect连接成功后,就可以使用创建的 Mongoose models 禁用缓存,要修改 bufferCommands配置...-SubDocuments 子文档是指嵌套在另一个文档中的文档。...在Mongoose中,意味着你可以在里嵌套另一个schema。...Mongoose子文档有两种不同的概念:子文档数组和单个嵌套子文档 const chidlSchema = new Schema({name:String}) const parentSchema...join 聚合操作,那就死$lookup,而 mongoose 拥有更强大的 populate,可以让你在别的 collection 中引用 document。
('User', userSchema); // 查询用户集合中的所有文档 User.find().then(result => console.log(result)); // 通过_id字段查找文档...字段值包含足球的文档 // User.find({hobbies: {$in: ['足球']}}).then(result => console.log(result)) // 选择要查询的字段 //...('User', userSchema); // 查找到一条文档并且删除 // 返回删除的文档 // 如何查询条件匹配了多个文档 那么将会删除第一个匹配的文档 // User.findOneAndDelete...('User', userSchema); // 找到要删除的文档并且删除 // 返回是否删除成功的对象 // 如果匹配了多条文档, 只会删除匹配成功的第一条文档 // User.updateOne({...name: '李四'}, {age: 120, name: '李狗蛋'}).then(result => console.log(result)) // 找到要删除的文档并且删除 User.updateMany
,如果要查询内嵌文档则可以通过.的形式来匹配 //如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号 db.colleges.find({'classes.core':"三大框架"}); /...num为666的数据 db.demos.find({num:666}); //17.查找num小于666的数据 db.demos.find({num:{$lt:666}}); //18.查找num大于666...mongoose的相关概念 mongoose中提供了几个新的对象: + Schema(模式对象):Schema对象定义约束了数据库中的文档结构 + Model:Model对象作为集合中的所有文档的表示...插入文档 personModel.create({ name: "蒙奇D路飞", age: 20, chat: "我是要成为海贼王的男人" }, (err) => { if...任何人都会变得软弱", sex: "女" }, { name: "乔巴", age: 6, chat: "路飞,为了你,我要成为最强的怪物
3、查找文档 // 根据条件查找文档(条件为空则查找所有文档) Course.find().then(result => console.log(result)) // 返回文档集合 [{...},{ _id: 5c09dea28acfb814980ff827, name: 'Javascript', author: 'wuyuxin‘ }] // 根据条件查找文档...第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb://localhost/playground...('User', userSchema); // 查询用户集合中的所有文档 // User.find().then(result => console.log(result)); // 通过_id字段查找文档...字段值包含足球的文档 // User.find({hobbies: {$in: ['足球']}}).then(result => console.log(result)) // 3.选择要查询的字段 /
我年轻时注意到,我每做十件事有九件不成功,于是我就十倍地去努力干下去。...——萧伯纳 前言 在大数据的驱使下,我们要实现数据持久化存储,数据共享,数据集中管理数据库是不二之选,小编在这里要阐述的是 mongodb 数据库,mongodb[1]是一个基于分布式文件存储的开源数据库系统...MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组,操作起来比较简单和容易。...2.4 Schema 定义 Schema 来说其实是用来定义文档的基本字段和集合,也可以理解为表结构的定义。Schema 是与数据无关的 并不能直接操作数据库。...:'user'}) 在 mongoose 中,提供了 Schema 的类,我们可以在实例化的时候先定义mongoose.Schema,以免后续总是要出现丑陋的new mongoose.Schema()。
('User', userSchema); // 查找到一条文档并且删除 // 返回删除的文档 // 如何查询条件匹配了多个文档 那么将会删除第一个匹配的文档 // User.findOneAndDelete...({}).then(result => console.log(result)) // 更新单个 User.updateOne({查询条件}, {要修改的值}).then(result => console.log...(result)) // 更新多个 User.updateMany({查询条件}, {要更改的值}).then(result => console.log(result)) // 引入mongoose第三方模块...('User', userSchema); // 找到要删除的文档并且删除 // 返回是否删除成功的对象 // 如果匹配了多条文档, 只会删除匹配成功的第一条文档 // User.updateOne({...name: '李四'}, {age: 120, name: '李狗蛋'}).then(result => console.log(result)) // 找到要删除的文档并且删除 User.updateMany
mongoimport –d 数据库名称 –c 集合名称 –file 要导入的数据文件 显示如下结果表示导入文件成功: ? 显示如下结果表示导入文件成功: ?...1.4 查询文档 // 根据条件查找文档(条件为空则查找所有文档) Course.find().then(result => console.log(result)) ?...//通过_id字段查找文档 // User.find({ // _id: '5c09f1e5aeb04b22f8460965' // }).then(result => console.log(...1.5 删除文档 删除单个文档 查找到一条文档并且删除 返回删除的文档 如何查询条件匹配了多个文档那么将会删除第一个匹配的文档 User.findOneAndDelete({_id: '5c09f1e5aeb04b22f8460965...1.7 集合关联 通常不同集合的数据之间是有关系的,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的,要查询文章的所有信息包括发表用户,就需要用到集合关联。
,不包含components下的)之前在服务端或路由更新之前被调用,即可以进行异步获取数据并返回当前组件。...koa服务端 koa这里面默认不支持 import xxx from xxx语法,我也没有去改配置,就默认用的moudle.exports和require。...MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 ? 更多的mongodb学习资料。 安装mongodb可视化工具 下载链接 ?...Schema 可以定义每个文档中存储的字段,及字段的验证要求和默认值。 mongoose.model() 方法将模式“编译”为模型。模型就可以用来查找、创建、更新和删除特定类型的对象。...注:MongoDB 数据库中,每个模型都映射至一组文档。这些文档包含 Schema 模型定义的字段名/模式类型。
MongoDB 的索引有哪些 nestjs mongoose示例 复合索引(Compound Index): 索引多个字段,允许对这些字段的组合进行高效查询。...这可以提高对哈希键的查询性能,因为 MongoDB 不需要扫描整个集合来查找匹配的文档。...({ title: 'text', content: 'text' }); 唯一索引(Unique Index): 确保集合中每个文档的索引字段值都是唯一的。...; 稀疏索引(Sparse Index): 仅为具有索引字段非空值的文档创建索引条目。...}); 覆盖索引(Covering Index): 包含查询中所需的所有字段,从而避免额外的磁盘访问来检索数据。
领取专属 10元无门槛券
手把手带您无忧上云