在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无法正确解释用户的需求!