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

最新文章

  1. [LeetCode] Plus One 加一运算
  2. 批处理命令——call 和 start
  3. lambda浅尝
  4. Mac上打开拷贝到移动硬盘里的文件提示“已经被osx使用不能打开”解决办法
  5. 开关WIFI脚本
  6. 借助Glances Monitor,密切关注你的系统
  7. [zz] Pixar’s OpenSubdiv V2: A detailed look
  8. Flex和Servlet结合上传文件报错(二)
  9. IS_EER分析
  10. Vacations
  11. SQL Server的学习
  12. 海量数据处理算法(top K问题)
  13. 2018年2月19日我的java学习(——)
  14. rem 自适应、整体缩放
  15. Python将list中的string批量转化成int/float
  16. Java 导入数据到Excel并提供文件下载接口
  17. dplyr-高效的数据变换与整理工具--转载
  18. 河工大玲珑校赛重现の rqy的键盘
  19. selectedIndex 属性
  20. 用MongoDB取代RabbitMQ(转)

热门文章

  1. java基础语法(二)
  2. SpringMVC-数据提交
  3. 【原创】Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)
  4. PicGo软件搭配gitee实现图床
  5. 你必须要知道的babel二三事
  6. Blocks(POJ 3734)
  7. python之cookie与session
  8. python中反射 getattr(对象,'方法')()和hasattr(对象,'方法')
  9. 内存管理初始化源码2:setup_arch
  10. 对OAuth2.0协议的理解和测试demo