mongoose 查询数据属性为数组,且包含某个值的方法
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) => {})
mongoose 查询数据属性为数组,且包含某个值的方法的更多相关文章
- 【MongoDB】查询字段对应的数组中包含某个值
在MongoDB操作的时候,我们可能会遇到查询[字段对应的数组中包含某个值]的数据,查询语句如下,假设表名为user. 示例1 数据 { id: 1, state_arr: [ "123&q ...
- js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
var questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...
- JavaScript判断数组是否包含指定元素的方法
本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** ...
- php合并数组并保留键值的方法
答案:使用 + 连接两个数组,替换array_merge()函数. php合并数组,一般会使用array_merge方法. array_merge — 合并一个或多个数组 array array_me ...
- 如何高效判断java数组是否包含某个值
在java中,我们如何判断一个未排序数组中是否包含一个特定的值?这在java中是一个频繁非常实用的操作.那么什么样的方法才是最高效的方式?当然 ,这个问题在Stack Overflow也是得票率非常高 ...
- PHP如何查找一列有序数组是否包含某值(二分查找)
问题:对于一列有序数组,如何判断给出的一个值,该值是否存在于数组. 思路:判断是否存在,最简单是,直接循环该数组,对每一个值进行比较.但是对于有序数组来说,这样写就完全没有利用好“有序”这一特点. 所 ...
- 判断Java数组是否包含某个值
下面给出四种方式,其中最有效率的还是loop方式,有兴趣的话可以测试一下: 代码如下: public boolean findStr(String[] args,String str){ boolea ...
- 判断js中数组是否包含某值
可以用数组的includes函数判断数组中是否存在某个值.
- JS 判断一个数组是否包含某个值
如下判断: return arrValues.indexOf('Sam') > -1
随机推荐
- 高可用服务之Keepalived基础入门
前面我们聊了聊高可用集群corosync+pacemaker的相关概念以及相关工具的使用和说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/category/18 ...
- Linux系统安装01-centos7系统安装
2020注定是一个不平凡的年份,对于各行各业都是不小的波动.话说回来,从当前的互联网趋势来看,linux的使用以后会越来越广泛,既然之前不懂linux,那么我们就从头开始,先学习Linux的系统安装. ...
- oracle之序列
序列 15.1 序列是生成唯一整数值的结构,它的典型用途是用于主键值. 结合真题演示伪列nextval, currval用法 CREATE SEQUENCE dept_deptnoINCREMENT ...
- [Java并发包学习八]深度剖析ConcurrentHashMap
转载自https://blog.csdn.net/WinWill2012/article/details/71626044 还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多 ...
- robotframework获取Token
公司做接口自动化,但是其他接口调用都需要传入token,所以首要目标是把token读取出来. 需要清楚以下内容: 1.登录使用post请求 2.https协议,且登录后需手工验证SSL证书,默认处于不 ...
- matplotlib设置颜色、标记、线条,让你的图像更加丰富
今天是数据处理专题的第11篇文章,我们继续来介绍matplotlib这个包的使用方法. 在上一篇文章当中我们介绍了matplotlib当中subplot的概念以及用法,今天我们将会来介绍matplot ...
- DeRPnStiNK靶机渗透
DeRPnStiNK靶机渗透 常规的信息搜集 扫到了phpmyadmin以及wordpress并在后台发现弱密码,即admin,admin 这里对wordpress进行了扫描: 扫描插件: searc ...
- DC4靶机
DC-4靶机渗透 扫描内网机器,看到143是开启的,那么ok了,确定了目标主机的地址. 对其进行进一步的端口扫描,80,22端口都是开放的. 访问具体网页,进行爆破,分别为admin,happy. 里 ...
- 转载:关于Python3中venv虚拟环境
https://www.cnblogs.com/zhaof/p/7299025.html
- pandas读取MySql/SqlServer数据
用过的东西总是会忘记,尤其是细节,还是记下来比较靠谱. 读取MySql数据 1 import MySQLdb 2 import pandas as pd 3 4 conn = MySQLdb.conn ...