mongoose在创建schema的时候有些属性需要设置为数组类型,比如商品图片、商品标签、不同尺寸、价格等。

那么怎么查询具有某个标签的商品了,下面记录一下两种情况:

查询具有‘vue’标签的文章


1、数组中存储的是字符串元素

下面以个人博客数据来说明

  • 数据(labels 值为字符串数组)
[
{
labels: ["vue","react","mongoose"],
likeCount: 0,
lookCount: 0,
name: "手动封装一个渐变色进度条",
note: "UI小姐姐给了一个渐变色的滚动条,cv编程已经没用了,自己动手封装一个",
__v: 0,
_id: "5f1ac78aec91df5d76f877d6"
},
{
labels: ["mongoose"],
likeCount: 0,
lookCount: 0,
name: "手动封装一个渐变色进度条",
note: "UI小姐姐给了一个渐变色的滚动条,cv编程已经没用了,自己动手封装一个",
__v: 0,
_id: "5f1ac78aec91df5d76f877d6" },
{
labels: ["vue"],
likeCount: 0,
lookCount: 0,
name: "手动封装一个渐变色进度条",
note: "UI小姐姐给了一个渐变色的滚动条,cv编程已经没用了,自己动手封装一个",
__v: 0,
_id: "5f1ac78aec91df5d76f877d6"
}]
  • 查询
 Articles.find({ isPublish: 1, labels: { $elemMatch: { $eq: 'vue' } } }, (err, doc) => {})
2、数组中存储的是对象
  • 数据 (labels 值为对象数组)
[
{
labels: [{name:"vue"},{name"react"},{name"mongoose"}],
likeCount: 0,
lookCount: 0,
name: "手动封装一个渐变色进度条",
note: "UI小姐姐给了一个渐变色的滚动条,cv编程已经没用了,自己动手封装一个",
__v: 0,
_id: "5f1ac78aec91df5d76f877d6"
},
{
labels: [{name"mongoose"}],
likeCount: 0,
lookCount: 0,
name: "手动封装一个渐变色进度条",
note: "UI小姐姐给了一个渐变色的滚动条,cv编程已经没用了,自己动手封装一个",
__v: 0,
_id: "5f1ac78aec91df5d76f877d6" },
{
labels: [{name:"vue"}],
likeCount: 0,
lookCount: 0,
name: "手动封装一个渐变色进度条",
note: "UI小姐姐给了一个渐变色的滚动条,cv编程已经没用了,自己动手封装一个",
__v: 0,
_id: "5f1ac78aec91df5d76f877d6"
}]
  • 查询 写法1
 Articles.find({
isPublish: 1,
labels: { $elemMatch: { name: 'vue' } }
}, (err, doc) => {})
  • 查询 写法2
 Articles.find({ isPublish: 1, labels.name:'vue'}}, (err, doc) => {})

青浅个人博客:qingqian.site:9527

mongoose 查询数据属性为数组,且包含某个值的方法的更多相关文章

  1. 【MongoDB】查询字段对应的数组中包含某个值

    在MongoDB操作的时候,我们可能会遇到查询[字段对应的数组中包含某个值]的数据,查询语句如下,假设表名为user. 示例1 数据 { id: 1, state_arr: [ "123&q ...

  2. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  3. JavaScript判断数组是否包含指定元素的方法

    本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** ...

  4. php合并数组并保留键值的方法

    答案:使用 + 连接两个数组,替换array_merge()函数. php合并数组,一般会使用array_merge方法. array_merge — 合并一个或多个数组 array array_me ...

  5. 如何高效判断java数组是否包含某个值

    在java中,我们如何判断一个未排序数组中是否包含一个特定的值?这在java中是一个频繁非常实用的操作.那么什么样的方法才是最高效的方式?当然 ,这个问题在Stack Overflow也是得票率非常高 ...

  6. PHP如何查找一列有序数组是否包含某值(二分查找)

    问题:对于一列有序数组,如何判断给出的一个值,该值是否存在于数组. 思路:判断是否存在,最简单是,直接循环该数组,对每一个值进行比较.但是对于有序数组来说,这样写就完全没有利用好“有序”这一特点. 所 ...

  7. 判断Java数组是否包含某个值

    下面给出四种方式,其中最有效率的还是loop方式,有兴趣的话可以测试一下: 代码如下: public boolean findStr(String[] args,String str){ boolea ...

  8. 判断js中数组是否包含某值

    可以用数组的includes函数判断数组中是否存在某个值.

  9. JS 判断一个数组是否包含某个值

    如下判断: return arrValues.indexOf('Sam') > -1

随机推荐

  1. MySQL 外部联结 内连接、左右外连接辨析

    内连接 在进行跨表内连接查询数据时,查询结果只返回符合查询条件的数据:跨表内连接查询的结果和使用where的多表查询结果相同,其实就是普通的查询,没啥好说的 -- 语法: SELECT 别名1.字段名 ...

  2. 1dialog 表单最基本的封装

    <!-- --> <template> <el-dialog :visible.sync="defaultConfigDialogAdd.dialogVisib ...

  3. 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期

    上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...

  4. C#知识点:操作XML

    XML是什么就不用说了文本标记语言. 主要纪录如何对XML文件进行增删改查. Xml的操作类都存在System.xml命名空间下面. 应用型的直接上代码 using System; using Sys ...

  5. Linux:nginx基础

    一..简单介绍 nginx时开源的www服务器,只能解析静态的网页(html,js,css等),具有静态小文件高并发特性. 可做web服务器.负载均衡.web cache(web缓存) 优点: 1.高 ...

  6. .NET委托,事件和Lambda表达式

    委托 委托是什么? 委托是一种引用类型(其实就是一个类,继承MulticastDelegate特殊的类.),表示对具有特定参数列表和返回类型的方法的引用. 每个委托提供Invoke方法, BeginI ...

  7. TomcatAJP文件包含漏洞

    漏洞概述 2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布关于Apache Tomcat的安全公告,Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2 ...

  8. spring boot环境配置以及开发工具选择(Spring一)

    首先安装java jdk jdk的安装参考:https://blog.csdn.net/zhys0902/article/details/79499329配置效果如下: 接下来是maven的相关配置 ...

  9. Robotframework自动化7-数据库连接

    一.连接mysql数据库 1.安装pymysql: pip  install   pymysql pip install robotframework-databaselibrary 导入库Datab ...

  10. Linux实战(6):Centos8上传镜像

    小记 做以下操作之前得准备一个Docker Hub 的账号,然后创建仓库可私有也可公有这得看你自己了,仓库的名称需记住等等会有用. 安装podman podman跟docker使用的命令非常的接近,但 ...