mongodb - 根据条件查询某个字段
问题描述
这是我正在使用的数据的架构:
{
_id: ObjectId(),
field1 : {
subField1: String,
subField2: String
},
field2 : {
subField1: String,
subField2: String
}
}
我想检查 field1.subField1 或 field2.subField1 是否等于某个值,然后相应地检索其他字段。例如,如果 field1.subField1 等于我要搜索的值,那么我想获取 field2 的值,反之亦然。我尝试使用$elemMatch
但无法找出正确的解决方案。谢谢你。
解决方案
这是另一种方法,也许比我的其他答案更直接......
再次假设以下文档,并且您希望找到 field1 是“CCC”的位置...
{
_id: ObjectId(),
field1 : {
subField1: "AAA",
subField2: "BBB"
},
field2 : {
subField1: "CCC",
subField2: "DDD"
}
}
...这是聚合...
db.mycollection.aggregate([
{
$project:
{
desiredValue:
{
$switch:
{
branches:
[
{
case: { $eq: [ "$field1.subField1", "CCC" ] },
then: "$field1.subField2"
},
{
case: { $eq: [ "$field2.subField1", "CCC" ] },
then: "$field2.subField2"
}
],
default: null
}
}
}
}
])
这是一个单阶段聚合,带有一个比较字段并选择输出的 switch 语句。
推荐阅读
- mysql - 通过 or 连接两个表
- android - 如何使用饼图可视化 Firebase 数据?
- c - 在 C 中打印最后 5 位数字(八进制)
- r - 从绘图更改为 ggplot
- machine-learning - 使用社交生成内容训练 fasttext 模型
- node.js - xero.apiCallback 不是函数
- python - csv阅读器函数的quotechar参数是如何工作的?
- flutter - 如何在课堂上显示 SnackBar
- python-3.x - ModuleNotFoundError:python 中没有名为“pixelengine”的模块
- opencv - 显示 UDP 组播 Rawvideo 流