我想做一个简单的数据质量检查"存储在MongoDB集合中的数据。质量的一个重要部分"是存储在特定字段(description
)中的文本长度。
要获得长度,请将其与$strLenBytes
汇总。除非文档缺少相关字段,否则此工作正常。然后我得到" $ strLenBytes需要一个字符串参数,发现:缺少"。我不能排除没有该字段的文档,而是希望获得0或null的长度或者这样的事情。因此我需要一些东西来代替"或者,如果文档中不存在该字段,则动态生成该字段。
查询看起来像这样(字段为description
):
$cursor = $MongoDB->someCollection->aggregate([
['$match' => [
'client_id' => 12345
]
],
['$project' => [
'desc_length' => [
'$strLenBytes' => '$description'
],
'client_id' => true
]
],
['$limit' => 10]
]);
因此有可能"注入"一个空字段description
,如果它不存在?或仅汇总desc_length
,如果description
存在?好吧,跳过desc_length
一代并不是优选的,因为它是"质量的一部分"我希望稍后按生成的质量值排序。无论如何,如果有必要的话,我也可以在php的那边做到这一点。