每个实验/文件中有79个参数。有27项实验/文献。
{
_id: 0,
experiment: 1,
parameters: [
{
name: "clock",
value: 8,
type: "system"
},
{
name: "B",
value: 100000,
type: "puls"
},
{
name: "campaign",
value: "October2019",
type: "navi"
}
]
}我想要所有的实验/文件-名称:"B“>值: 1000和名称:”活动“=价值:"October2019”
发布于 2022-02-21 15:56:04
下面是使用$filter过滤parameters字段内容的解决方案
我使用$and和$or的组合来重新创建您的条件
((name = "B") AND (value > 1000)) OR ((name = "campaign") AND (value = "October2019"))试试吧,这里
db.collection.aggregate([
{
$project: {
_id: 1,
experiment: 1,
parameters: {
$filter: {
input: "$parameters",
as: "parameter",
cond: {
$or: [
{
$and: [
{
$eq: [
"$$parameter.name",
"B"
]
},
{
$gt: [
"$$parameter.value",
1000
]
}
]
},
{
$and: [
{
$eq: [
"$$parameter.name",
"campaign"
]
},
{
$eq: [
"$$parameter.value",
"October2019"
]
}
]
},
]
}
}
},
}
}
])https://stackoverflow.com/questions/71199510
复制相似问题