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匹配返回相关推荐

  1. Laravel + MongoDB 数组字段相关查询

    我的个人博客:逐步前行STEP 1.$exist 查询 是否存在这个字段 //查询所有存在标签你字段的博客 App\Blog::where('tags','$exist',true)->get( ...

  2. 微信小程序云开发云数据库_聚合操作_联表查询_对象数组某字段与另一集合的某字段相等匹配

    目录 表结构 需求 Aggregate.unwind 查询操作代码 查询结果 表结构 错题表 wrong 单选题表 single 需求 连接错题表和单选题表,筛选出错题的题目ID.题目.答案.解析.用 ...

  3. php数据库根据相似度排序,php数组字段相似度排序

    摘要:今天有一个客户有这么一个需求,要求对某篇文章的相关内容的列表,在跟文章标题进行相似度排序,于是想了又想,写了一个小算法,可以根据关键字相似度对数组某个字段进行排序... 今天有一个客户有这么一个 ...

  4. php mongodb 子查询,MongoDB数组子查询elemMatch

    MongoDB数组子查询elemMatch 在 MongoDB数组子查询elemMatch详解 语法 db_name.collection_name.find({field:{$elemMatch:{ ...

  5. MongoDB数组查询

    文章目录 MongoDB数组查询 数组匹配 查询数组元素 多条件数组元素查询 1. 复合过滤条件查询数组元素 2. 查询满足多个条件的数组元素 3. 按数组索引位置查询元素 4. 按数组长度查询数组 ...

  6. 数组字段查询不包含_不可不知的可变Java长数组

    前言 有时我们希望将把数据保存在单个连续的数组中,以便快速.便捷地访问数据,但这需要调整数组大小或者对其扩展.Java 数组不能调整大小,只用数组不足以达成目标.可变长原始类型数组需要自己实现.本文将 ...

  7. c++ 数组作为参数、返回值

    数组作为参数 写C++代码遇到数组作为参数,常常忘记怎么写形参,这里记录一下. 一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时 ...

  8. mysql两表之间字段匹配concat_实例学习MySQL多表之间字段的匹配

    多表之间字段进行匹配的sql语句: 复制代码 代码示例: $sql=$empire->query("select table.title,lianxi,table.dizhi,tabl ...

  9. MongoDB数组修改器更新数据

    MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改 ...

最新文章

  1. 深度人脸识别:CVPR2020论文要点
  2. 邁向IT專家成功之路的三十則鐵律 鐵律十七:IT人休閒之道-清心
  3. (转载)Python数据分析之pandas学习
  4. Spark算子:RDD基本转换操作–coalesce、repartition
  5. referer htttp headers 统计信息 防盗链
  6. expdp impdp中 exclude/include 的使用
  7. 人工智能选go还是python_深圳人工智能学Python还是go,真实经历分享
  8. 最简单的NamedPiep程序[秋镇菜]-初学者看看
  9. 关于内容管理系统IWMS的几个问题
  10. android编写计算器代码,Android入门计算器编写代码
  11. Linux 操作系统原理介绍
  12. 15个开发者最亲睐的Andr​​oid代码编辑器
  13. ECSHOP彩虹易支付插件,彩虹易支付对接ECshop支付接口插件,ECSHOP对接易支付接口插件【2022免签约免申请免企业免年费个人支付接口】
  14. linux 查找mysql rpm包位置_linux如何查看rpm包的安装路径办法
  15. 再探 Compose 版本的玩安卓
  16. 系统安全性之十大措施
  17. Visual Assist 配色
  18. 数控技术转行java_我29岁想转行数控却找不到工作
  19. P1567 统计天数 python代码
  20. android面试之今日头条/字节跳动 android社招面试(附答案)

热门文章

  1. python 多线程并发编程(生产者、消费者模式),边读图像,边处理图像,处理完后保存图像实现提高处理效率
  2. linux如何备份网站,linux怎么备份网站
  3. 3. 什么是icmp?icmp与ip的关系_你知道如何跟女生,确定恋人关系吗?
  4. 筛选染色体连续区域的策略
  5. 代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。...
  6. Kernel Page Global Directory (PGD) of Page table of Process created in Linux Kernel
  7. sql修改表字段数据类型
  8. 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)
  9. 全国计算机等级考试题库二级C操作题100套(第81套)
  10. 解决crontab 定时任务加载失败