前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongodb 中嵌套数组的且查询

mongodb 中嵌套数组的且查询

作者头像
一笠风雨任生平
发布2019-08-02 11:06:52
6.6K0
发布2019-08-02 11:06:52
举报
文章被收录于专栏:服务化进程服务化进程

如果在mongodb中存在如下数据

{

audit:{

experts:[{expertId:"1",result:"success",......}

{expertId:"2",result:"success",......}

]

}

},

{

audit:{

experts:[{expertId:"1",result:"fail",......}

{expertId:"2",result:"success",......}

]

}

}

如果是 需要查询数组需要查询experts中的expert=1 并且 result=success,按照查询参数查询的结果应该只有第一个才符合条件。

如果你是这么写的{“audit.experts.expertId”:"1",“audit.experts.result”:"success"},那么会将两条数据都会查出来。

这就需要用到mongodb查询符号"$elemMatch"

"audit.experts" : {

"$elemMatch" : {

"expertId" : "1",

"result" : "success"

}

}

由于是嵌套了几层查询,所以当数据量很大时效率不高,这时需要创建一个联合索引

{“audit.experts.expertId”:1,“audit.experts.result”:1};

由于该索引mongodb默认不会被使用,所以需要使用hint方法来强制其使用索引。

没有调用索引和使用索引效率相差百倍!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档