Mongodb $匹配对象字段,其中索引是已知字段

时间:2018-05-14 21:54:35

标签: node.js mongodb projection

假设我有一个类似的文档。

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可以为我做这件事我真的很酷。

感谢任何帮助!

1 个答案:

答案 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版本中的运算符新增