arrays - mongodb如何只找到数组的一部分
问题描述
我想在下面的数据中使用“find”函数得到一个返回的数组,该数组的内容如下。
{qty:15 warehouse:C},
{qty:20 warehouse:C},
{qty:25 warehouse:C}
我不想要“第一个元素”
我想返回一个 gty 大于 20 的数组。
我该怎么做?
接收从mongodb返回的文档
我必须直接用循环将其拉出吗?
有没有办法通过查询来解决?
{
_id: ObjectId('60d0b364737d829c870b7571'),
item: 'journal',
instock: [
{
warehouse: 'A',
qty: 5
},
{
warehouse: 'C',
qty: 15
},
{
warehouse: 'C',
qty: 20
},
{
warehouse: 'C',
qty: 25
}
]
}
解决方案
您可以使用聚合管道:
$match
匹配您要查询的所有文档$project
选择要返回的字段$filter
按某些条件过滤instock
数组
db.collection.aggregate([
{
"$match": {
"_id": "id_1"
}
},
{
"$project": {
"item": 1,
"instock": {
"$filter": {
"input": "$instock",
"cond": {
"$gt": [
"$$this.qty",
20
]
}
}
}
}
}
])
推荐阅读
- javascript - Create directory recursively if it does not exist?
- python-3.x - Scrapy shell
is running all of the spiders in my 'spiders' folder - git - git branche's files doesn't appear in my local
- excel - If/And functions are not working correctly in my formula, can someone help me?
- angular - 延迟加载模块上的角度子路由未加载
- c# - C# 对 JSON 响应字符串进行排序
- oauth-2.0 - Alexa Skill Activation API 中的 redirect_uri 是什么?
- r - 基于两列对数据框进行采样
- java - 如何在 Intellij Idea 中使用 maven 构建战争
- html - 如何在使用 CSS 自动分页后创建上边距?