首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mongoose多表查询运用实例

在开发内容管理系统时,经常会用到多表关联查询场景,如文章分类、文章详情、文章作者三张表,UML图如下: ? 业务需求如下:查询文章信息,并显示文章的分类以及文章的作者信息。...这样简单的一个需求在MySQL里要写一个很长的大SQL语句,但是在MongoDB里,凭借着Mongoose却可以轻松实现,实现步骤如下: 1....定义文章分类的schema生成模型导出,文件名 aritcleCate.js // 引入自定义的数据库连接文件 var mongoose = require('....定义用户的schema生成模型导出,文件名 user.js // 引入自定义的数据库连接文件 var mongoose = require('....执行查询操作 // 引入定义的文章模型 var ArticleModel = require('.

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mongoose根据关键字模糊查询(包括前端模糊查询)

    后端: 使用new RegExp()实例对象 eg: const Schema = mongoose.model("modelName") let reg = new RegExp("查询关键词") awati...id 对应起来 //例如:接口数据 id为0的的对象 添加name为灯 // id为1的的对象 添加name为无线开关 es5 resObj.forEach(function(e){resArr.push...selfArr.push(e.id)}) console.log(resArr) for(var i =0;i<selfArr.length;i++){ //遍历出自定义数组每一个id 在接口 id 数组中的位置...// 接口id.indexOf(每一个数组Id) 返回每一个自定义数组id在接口数组id中的位置 //然后通过这个的位置 去给接口数组添加name字段 添加的内容为:这个位置下自定义数组的name var...(selfArr[i]) //添加字段 resObj[i].name = selfObj[index].name } console.log(resObj) es6 //方案2 通过自定义数组 映射新的对象

    2.8K10

    使用Mongoose的populate方法实现多表关联查询

    MongoDB在3.2以上的版本有类似于 join 的 $lookup 聚合操作符,其实 Mongoose 有一个更强大的替代方法,叫做populate ( ),它允许你在其他集合中引用文档,实现更简洁优雅的查询操作...业务需求如下:查询文章信息,并显示文章的分类以及文章的作者信息,下面用 populate 来实现这个查询需求。 1....定义文章的 schema 生成模型导出,文件名 article.js 通过给 schema 中的关联字段添加 ref 与指定的模型建立关联 // 引入自定义的数据库连接文件 var mongoose =...populate('cid').populate('author_id').exec(function(err,docs){ console.log(docs); }) 通过给 populate 中传入所关联的字段与指定的集合进行关联查询...,在 exec( ) 的回调方法中获取查询的结果。

    3.7K20

    Django中Q查询及Q()对象 F查询及F()对象

    python 减少一些操作所需的数据库查询次数 ---- #2.2 F()操作在 obj.save() 后会持续存在 如果times的值是1,那么经过n次save()之后,times的值是2 obj...带有双下划线的F()对象将引入任何需要的join 操作以访问关联的对象 models.Test.objects.filter(authors__name=F('blog__name')) 对于date...__gt=F('pub_date') + timedelta(days=3)) #2.4 Django Q()表达式 当我们在查询的条件中需要组合条件时(例如两个条件“且”或者“或”)时。...我们可以使用Q()查询对象 from django.db.models import Q models.Author.objects.filter(Q(name="cox") | Q(name="Tom...获取在Author表中,name等于cox并且age等于12的所有数据 #2.5 Q()传入条件查询 q1 = Q() q1.connector = 'OR' q1.children.append(('

    79220

    mongodb用mongoose得到的对象不能增加属性解决

    增加的属性在(goods)schema中没有定义,所以我们给goods临时附加productNum和checked属性是无效的。...比如上述的只是想实现在添加商品的时候,顺便把productNum和checked的值赋给users表中。我们无须把属性存储到goods中。...结论:mongodb中使用mongoose取到的对象不能增加属性。 解决方法一, 在schema中直接增加需要补充的属性。...(有时候不是很好) 解决方法二, 把查询到的结果clone一个对象,然后在新对象中补充属性。  ...这个只是简单的记录一下在学习过程中遇到的一些不太顺的小坑。 有问题可以留言一起讨论。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    1.7K50

    Mongoose 实现关联查询和踩坑记录

    本文源自工作中的一个问题,在使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外的其它字段,在网上搜索时这块的解决方案也并不是很多,在经过一番查阅、测试之后...图片来源:mongoing[1] 引用模型示例 JSON 模型 我们通过作者和书籍的关系,一个作者对应多个书籍这样一个简单的示例来学习如何在 MongoDB 中实现关联非 _id 查询。...$lookup.foreignFiled: 被 Join 的集合的字段,本示例中是 Books 表的 bookId 字段。 $as: 别名,关联查询返回的这个结果起一个新的名称。...如果需要指定哪些字段返回,哪些需要过滤,可定义 $project 对象,关联查询的字段过滤可使用 别名.关联文档中的字段 进行指定。...可以在创建 Schema 时在第二个参数 options 中设置,也可以使用创建的 Schema 对象的 set 方法设置。

    26.5K20

    【JavaScript】内置对象 ② ( JavaScript 技术文档查询 | MDN 文档简介 | MDN 文档查询方法 | 查询对象描述 | 查询对象属性 | 查询对象方法 )

    ://developer.mozilla.org/zh-CN/ 页面中 , 在 该页面 的 搜索框 中 , 输入要搜索的内容 , 即可查询对应文档 ; 在搜索框中输入 Math , 这是 JavaScript.../zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math , 页面内容如下 : 在该页面中 , 可以查看 Math 内置对象的 类型介绍 , 描述..., 常量 , 方法 等介绍 ; 点击页面右上角的语言选项 , 可以切换语言 , 选中 中文(简体) 即可切换成中文 ; 3、查询对象描述 查询 Math 内置对象 , 在 Math 文档的主页 https..., 首先显示的就是文档描述 ; 之后依次显示的项目是 : 描述 属性 方法 规范 浏览器兼容性 参见 点击页面右侧的 标题导航 , 可以快速跳转到指定位置 ; 4、查询对象属性 点击 Math 文档页面右侧的...Web/JavaScript/Reference/Global_Objects/Math/PI 在该页面中显示具体属性的 描述 , 示例 , 规范 等信息 ; 5、查询对象方法 点击 Math 文档页面右侧的

    11810

    Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询

    上一篇Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询讲述了关于Django模型的查询。...但是都是条件与常量的查询,以及单条件查询,那么本篇章来介绍F对象、Q对象、聚合查询等功能。...参考文献 https://docs.djangoproject.com/zh-hans/2.1/topics/db/queries/ F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?...语法如下: F(属性名) 使用F对象需要导入库,如下: from django.db.models import F 下面使用模型来查询 shelves_date 的结果,如下...`update_time` * 2)) LIMIT 21 Q对象 前面的查询可以看到都是单条件查询,并没有多个条件查询。

    1.9K30

    初试MongoDB学习之Mongoose的使用

    Mongoose本质是一个对象文档模型(ODM)库, 他对Node原生的MongoDB模块进行了一部优化封装,并且提供了更多的功能。...#Mongoose的优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中的文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...}) #mongoose基本使用 #mongoose的几个新的对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...文档 —— 是MongoDB的核心概念,是键值对的一个有序集,在JavaScript里文档被表示成对象。同时它也是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行,但更具表现力。...mongoose中任何任何事物都是从Schema开始的。每一个Schema对应MongoDB中的一个集合(collection)。Schema中定义了集合中文档(document)的样式。

    5.9K20
    领券