mongodb - 使用其他字段值访问随机字段
问题描述
我有这样的文件:
{
value: "field2",
field1: [ ... ],
field2: [ ... ],
...
}
其中 value 将是文档中某个字段的值。一个文档可以有许多不同的字段。
我想匹配一个文件。仅获取相关字段,然后他们对其进行一些计算。
例如我想做:
{
$unwind: "$value"
}
并得到展开的结果field2
。我怎样才能做到这一点?
解决方案
这有点“hacky”,但您可以使用$objectToArray和$filter之类的运算符来实现这一点,如下所示:
db.collection.aggregate([
{
$addFields: {
"values": {
$arrayElemAt: [
{
$filter: {
input: {
$objectToArray: "$$ROOT"
},
as: "field",
cond: {
$eq: [
"$$field.k",
"$value"
]
}
}
},
0
]
}
}
},
{
$unwind: "$values.v"
},
{
$replaceRoot: {
newRoot: "$values.v"
}
},
])
推荐阅读
- date - 如何计算 Pine Script 中两个日期(天数)之间的差异?
- elasticsearch - 如何在不通过 tls 传递 -k 的情况下卷曲 elasticsearch kubernetes 运算符?
- matlab - 在 for 循环中使用 struct 访问二叉搜索树
- android - 我可以在扩展小部件中使用列小部件吗?
- amazon-web-services - AWS EC2 用户数据在修改后不起作用
- html - 如何修复 div 中的左边距以在很多段落的中间工作
- python - Tkinter 动画标签文本作为 html 品牌
- django-views - Django-不在前端显示 PDF 页面
- javascript - 如何开发具有多个下拉菜单的站点内链接程序?
- java - Java 正则表达式,“”和“\\s\\s”之间的区别