Попробуйте следующее агрегатирование. Я упомянул об изменениях для № 4 и № 5 в комментариях ниже.
db.sample.aggregate(
[
{
$addFields: {
totalList: { $size: "$List" } //This is for #1
}
},
{ $project : {
"Text":1,
"Title":1,
"totalList":1,
__v:{
$cond: {
if: { $eq: [1,1] }, //This is for #2
then: "$$REMOVE",
else: 0
}
},
List:
{
$reduce: //This is for #3
{
input: "$List",
initialValue: "",
in: {
$concat: [
"$$value",
{
$cond: {
if: { $eq: [ "$$value", "" ] }, //This is for #4
then: "",
else: ", "
}
},
"$$this"
]
}
}
}
}
},
{
$project : {
"Text" : 1,
"Title" : 1,
"__v" : 1,
"List" : { $substr: [ "$List", 0, 50 ] }, //This is for #5
"totalList":1
}
}
]
);
private fun testFunction() {
val pics: Array<ImageView?> = arrayOfNulls(6)
// TODO the rest of your test
}
Или даже короче:
val pics = arrayOfNulls<ImageView?>(6)
Это использует в своих интересах вывод типа Kotlin и избегает избыточности.