mongodb - 我怎样才能做这样的查询过滤器?
问题描述
我正在尝试过滤包含 的数组item.espaco == 'peitoral'
,就像这样。
我的架构:
Mercado.findById({ _id: '5d52e69b4b333234f0bbf1ba' }).where({ 'itens.item.espaco': { $eq: 'peitoral' } }
解决方案
在 mongodb 3.4 或更高版本上您可以使用$filter和$addFields
Mercado.aggregate([
{ $match: { _id: mongoose.Types.ObjectId("5d52e69b4b333234f0bbf1ba") }},
{ $addFields: {
itens: {
$filter: {
input: "$itens",
as: "iten",
cond: { $eq: ["$$iten.item.espaco", "peitoral"] }
}
}
}}
])
您可以使用返回替换项并使用聚合返回过滤器数据
推荐阅读
- python - 从“2D”numpy中的每一行删除“n”元素,其中“n”逐行变化
- python - 安装在 Anaconda 中的模块,与 Spyder 相同的解释器,但 Spyder 得到“ModuleNotFoundError”
- java - Android Textview 未与页面顶部对齐
- python - 如何在 Airflow 中扩展模板上下文?
- r - 使用多个约束在 R 中使用 CVXR 解决优化问题
- php - 将 ASIN 转换为 GTIN (EAN)
- android - Android Kotlin:单击应用程序概述按钮时应用程序闪烁
- python - 关于 matplotlib 的基数/偏移量/比例因子的说明
- c++-winrt - winrt::fire_and_forget,这是做什么的?
- google-apps-script - .getSheets() 函数返回错误的工作表