如果我将$addFields
用作实际上不存在的元素的聚集阶段,Mongo将如何处理呢?
我之所以问是因为,在我的数据中,对于一个特定的字段(即数组),有些文档具有1个数组元素,而另一些文档具有2或3个元素(因此位置为0、1和2)。
所以,如果我这样做:
$addFields : {
secondAgency: {$arrayElemAt:["$agency", 1]},
}
如果代理商阵列的位置1中没有元素,Mongo将如何处理文档?有没有一种方法可以通过条件检查来解决-仅在数组的位置1处存在数组元素时才包括此字段?
答案 0 :(得分:1)
它只会忽略该值,并且不会添加此类字段。要添加默认值,请使用$ifNull
:
db.getCollection('x').aggregate([
{$addFields: {
secondAgency1: {$arrayElemAt: ["$agency", 1]},
secondAgency2: {$ifNull: [{$arrayElemAt: ["$agency", 1]}, "DEFAULT"]}
}}
])