评估存储在文档字段中的MongoDB表达式

时间:2014-10-09 09:55:06

标签: mongodb mongodb-query aggregation-framework

我想基于每个文档的字段cd中指定的布尔表达式的满足来过滤集合testData中的文档(集合的每个文档可以具有不同的条件和字段集)

让我们假设表达式是

var exp={$gte: [x, 5]}

在我调用的文档JSON.stringify(exp)

中设置cd的值

我的文件与此类似:

{ "_id" : ObjectId("543650b5433d4688a9a029ee"), "x" : 28, "cd" : "{\"$gte\":[\"x\",\"5\"]}" }

我想指定一个聚合查询,其中根据cd的值处理/删除每个文档。

我试图像这样指定一个查询:

db.testData.aggregate([
{ 
    $redact:
    {
        $cond: {
            if: cd,
            then: '$$KEEP',
            else: '$$PRUNE'
        }
    }
}
])

但是我收到了这个错误:

  

错误:无法在src / mongo / shell / query.js中将原生函数转换为BSON:81

我也尝试用这种方式引用cd $的字段路径:

db.testData.aggregate([
{ $redact:
    {
        $cond: {
            if: '$cd',
            then: '$$KEEP',
            else: '$$PRUNE'
        }
    }
}
])

但在这种情况下,选择包含cd的所有文档,独立于cd值。

我想知道如何强制评估条件cd。

0 个答案:

没有答案