Как использовать агрегацию MongoDB для удаления пустых "" строк в массиве значений v? - PullRequest
1 голос
/ 21 апреля 2020

У меня есть следующие объекты MongoDB, которые я сначала преобразовал в пары kv ключ-значение, используя $objectToArray и $split. Как удалить пустую строку "" из массива значений v? Спасибо!

{ 
    "_id" : ObjectId("5e9ecf782980434d78120a49"), 
    "data_kv" : [ { "k" : "U1", "v" : [ "", "", "University", "", "", "of", "", "", "Australia", "", "" ] } ] 
}
{   
    "_id" : ObjectId("5e9ecf7f2980434d78120a4a"), 
    "data_kv" : [ { "k" : "U2", "v" : [ "", "", "University", "of", "", "", "", "", "Australia", "", "" ] } ] 
}
{ 
    "_id" : ObjectId("5e9ecf8a2980434d78120a4b"), 
    "data_kv" : [ { "k" : "U3", "v" : [ "", "", "University", "", "", "of", "", "", "", "Sweden", "", "" ] } ] 
}

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете использовать ниже агрегации

db.collection.aggregate([
  { $project: {
    data_kv: {
      $map: {
        input: "$data_kv",
        as: "kv",
        in: {
          k: "$$kv.k",
          v: {
            $filter: {
              input: "$$kv.v",
              cond: { $ne: ["$$this", ""] }
            }
          }
        }
      }
    }
  }}
])

MongoPlayground

...