mongodb数组字段prefix匹配返回
DOC: https://docs.mongodb.com/manu...
collection(test)结构
{_id: Objectd("123456789"),category: ['apple_1','apple_2','banana_1','banana_2']
}
Question:
对test表的所有数据做category过滤,返回category中以apple开头的元素
表原数据:
[ {_id: Objectd("id1"),category: ['apple_1','apple_2','banana_1','banana_2']},{_id: Objectd("id2"),category: ['apple_3','apple_4','banana_1','banana_2']}...
]
返回数据示例:
[ {_id: Objectd("id1"),category: ['apple_1','apple_2']},{_id: Objectd("id2"),category: ['apple_3','apple_4']}...
]
数据库try:随机构建test表
function getRandomArrayElements(arr, count) {var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;while (i-- > min) {index = Math.floor((i + 1) * Math.random());temp = shuffled[index];shuffled[index] = shuffled[i];shuffled[i] = temp;}return shuffled.slice(min);
}
var temp = ['apple_1','apple_2','banana_3','banana_4','pear_5','pear_6','pear_7'];
for(var i =0; i < 10; i ++){db.getCollection("test").insert({category:getRandomArrayElements(temp, Math.random()*7)})
}
Try 1:
db.test.find({},{'category':{'$elemMatch':{$regex: 'apple'}
}})
返回:
[ {_id: Objectd("id1"),category: ['apple_1',]},{_id: Objectd("id2"),category: ['apple_3',]}...
]
category只保留了符合过滤规则的第一个元素
Try 2:
db.test.aggregate({$unwind: '$category'},{$match: {category: {$regex: 'apple_'}}},//unwind,match顺序不能换
)
返回:
[ {_id: Objectd("id1"),category: 'apple_1'},{_id: Objectd("id1"),category: 'apple_2'},{_id: Objectd("id2"),category: 'apple_3'},{_id: Objectd("id2"),category: 'apple_4'}...
]
将一个文档拆分成多个文档返回
Try 3(Solution):
db.test.aggregate({$project: {"category":{$filter: {input: "$category",as: "cate",cond: {// category数组元素cate包含字符串'apple_'$eq: [ {$indexOfCP: ["$$cate", "apple_"]}, 0] }}}}
})
返回:
[ {_id: Objectd("id1"),category: ['apple_1','apple_2']},{_id: Objectd("id2"),category: ['apple_3','apple_4']}...
]
mongodb数组字段prefix匹配返回相关推荐
- Laravel + MongoDB 数组字段相关查询
我的个人博客:逐步前行STEP 1.$exist 查询 是否存在这个字段 //查询所有存在标签你字段的博客 App\Blog::where('tags','$exist',true)->get( ...
- 微信小程序云开发云数据库_聚合操作_联表查询_对象数组某字段与另一集合的某字段相等匹配
目录 表结构 需求 Aggregate.unwind 查询操作代码 查询结果 表结构 错题表 wrong 单选题表 single 需求 连接错题表和单选题表,筛选出错题的题目ID.题目.答案.解析.用 ...
- php数据库根据相似度排序,php数组字段相似度排序
摘要:今天有一个客户有这么一个需求,要求对某篇文章的相关内容的列表,在跟文章标题进行相似度排序,于是想了又想,写了一个小算法,可以根据关键字相似度对数组某个字段进行排序... 今天有一个客户有这么一个 ...
- php mongodb 子查询,MongoDB数组子查询elemMatch
MongoDB数组子查询elemMatch 在 MongoDB数组子查询elemMatch详解 语法 db_name.collection_name.find({field:{$elemMatch:{ ...
- MongoDB数组查询
文章目录 MongoDB数组查询 数组匹配 查询数组元素 多条件数组元素查询 1. 复合过滤条件查询数组元素 2. 查询满足多个条件的数组元素 3. 按数组索引位置查询元素 4. 按数组长度查询数组 ...
- 数组字段查询不包含_不可不知的可变Java长数组
前言 有时我们希望将把数据保存在单个连续的数组中,以便快速.便捷地访问数据,但这需要调整数组大小或者对其扩展.Java 数组不能调整大小,只用数组不足以达成目标.可变长原始类型数组需要自己实现.本文将 ...
- c++ 数组作为参数、返回值
数组作为参数 写C++代码遇到数组作为参数,常常忘记怎么写形参,这里记录一下. 一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时 ...
- mysql两表之间字段匹配concat_实例学习MySQL多表之间字段的匹配
多表之间字段进行匹配的sql语句: 复制代码 代码示例: $sql=$empire->query("select table.title,lianxi,table.dizhi,tabl ...
- MongoDB数组修改器更新数据
MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改 ...
最新文章
- 深度人脸识别:CVPR2020论文要点
- 邁向IT專家成功之路的三十則鐵律 鐵律十七:IT人休閒之道-清心
- (转载)Python数据分析之pandas学习
- Spark算子:RDD基本转换操作–coalesce、repartition
- referer htttp headers 统计信息 防盗链
- expdp impdp中 exclude/include 的使用
- 人工智能选go还是python_深圳人工智能学Python还是go,真实经历分享
- 最简单的NamedPiep程序[秋镇菜]-初学者看看
- 关于内容管理系统IWMS的几个问题
- android编写计算器代码,Android入门计算器编写代码
- Linux 操作系统原理介绍
- 15个开发者最亲睐的Andr​​oid代码编辑器
- ECSHOP彩虹易支付插件,彩虹易支付对接ECshop支付接口插件,ECSHOP对接易支付接口插件【2022免签约免申请免企业免年费个人支付接口】
- linux 查找mysql rpm包位置_linux如何查看rpm包的安装路径办法
- 再探 Compose 版本的玩安卓
- 系统安全性之十大措施
- Visual Assist 配色
- 数控技术转行java_我29岁想转行数控却找不到工作
- P1567 统计天数 python代码
- android面试之今日头条/字节跳动 android社招面试(附答案)
热门文章
- python 多线程并发编程(生产者、消费者模式),边读图像,边处理图像,处理完后保存图像实现提高处理效率
- linux如何备份网站,linux怎么备份网站
- 3. 什么是icmp?icmp与ip的关系_你知道如何跟女生,确定恋人关系吗?
- 筛选染色体连续区域的策略
- 代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。...
- Kernel Page Global Directory (PGD) of Page table of Process created in Linux Kernel
- sql修改表字段数据类型
- 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)
- 全国计算机等级考试题库二级C操作题100套(第81套)
- 解决crontab 定时任务加载失败