Mongodb聚合使用另一个字段值过滤集合

时间:2018-11-19 08:53:04

标签: mongodb aggregation-framework

在mongodb 3.6+中,这是在使用另一个字段值进行聚合期间匹配文档的正确语法吗?

假设有一个类似的收藏集:

{"test": { "a" : "hi","b":"hi"} }
{"test": { "a" : "hi","b":"welcome"} }
{"test": { "a" : "hi","b":"ciao!"} }

如何过滤此集合并获取a = b处的所有文档?

解决方案是使用带有$ match和$expr的聚合进行以下查询:

db.test.aggregate([
    {
        $match :  { $expr: { $eq: [ "$test.a" , "$test.b" ]}}
    }
])

此查询将导致(省略ID):

{
    "test" : {
        "a" : "hi",
        "b" : "hi"
    }
}

我的错误是:

db.collection.aggregate([$match : {"a" : "b"}}])

db.collection.aggregate([$match : {"a" : "$b"}}])

没有,$ expr mongodb无法正确解释用户的需求!

0 个答案:

没有答案