如果字段不存在则使用忽略$ strLenBytes或使用PHP在MongoDB中使用替换

时间:2017-08-01 15:16:52

标签: php mongodb aggregation-framework

我想做一个简单的数据质量检查"存储在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的那边做到这一点。

0 个答案:

没有答案