Удалить часть массива mongodb - PullRequest
1 голос
/ 08 января 2020

Привет, я пытаюсь удалить что-либо после первого значения, например,

Коллекция: {

"_id' :.....
"UrlId" : "5dfc1aa2986b7c30f3398be4",
    "coverInput" : 
           [
            "https://test.com/s/files/1/00351576213050",
            "https://test.com.au"
           ],

}

то, что я хочу заменить документ:

Коллекция: {

"_id' :.....
"UrlId" : "5dfc1aa2986b7c30f3398be4",
    "coverInput" : 
           [
            "https://test.com/s/files/1/00351576213050"
           ],

}

Я уверен, что это что-то простое. Я попробовал это, но получил ошибку:

db.test.aggregate([
{
    $addFields: {
        coverInput: { $substr: [ "$coverInput", 0, { $indexOfBytes: [ "$coverInput", "," ] } ] }
    }
}
]).forEach( doc => db.test.updateOne( { _id: doc._id }, { $set: { coverInput: doc.coverInput } } ) )

Заранее спасибо!

1 Ответ

1 голос
/ 08 января 2020

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

db.collection.aggregate([
  { "$project": {
    "coverInput": {
      "$slice": ["$coverInput", 1]
    }
  }}
])

Или, если вы хотите обновить документ

db.test.updateOne(
  { _id: doc._id },
  [{
    $set: { coverInput: { "$slice": ["$coverInput", 1] } }
  }]
)
...