假设我有一个类似的文档。
const User = {
info: {
id: 123,
},
data: {
111:{},
123:{value: 5},
234:{value: 10},
}
}
我想预先形成和聚合,以检查'data.123.value'是否大于10。
mongo有可能吗?这是我到目前为止所做的,但它不起作用。
aggregate([
{
$project: {
UserId: '$info.id',
}
},
{
$match: {
'data[$UserId].value: {$gt: 10},
}
}
]
我可以做一些服务器端工作来执行此操作,但如果mongo可以为我做这件事我真的很酷。
感谢任何帮助!
答案 0 :(得分:0)
aggregate([
{$project:{dataToarray:{$objectToArray: "$data"} }},
{$unwind:"$dataToarray"},
{$match:{v:{$gt:10}}}
])
使用 $ objectToArray 运算符 https://docs.mongodb.com/manual/reference/operator/aggregation/objectToArray/
3.6版本中的运算符新增