我想基于每个文档的字段cd中指定的布尔表达式的满足来过滤集合testData中的文档(集合的每个文档可以具有不同的条件和字段集)
让我们假设表达式是
var exp={$gte: [x, 5]}
在我调用的文档JSON.stringify(exp)
我的文件与此类似:
{ "_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。