Разделение строки на объект с использованием JavaScript в оболочке mon go - PullRequest
1 голос
/ 22 апреля 2020

В моей коллекции mon go у меня есть строка range = "2000 - 3000 INR", теперь я хочу разбить эту строку на диапазон объектов = {min: 2000, max: 3000, currency: "INR" } моя коллекция выглядит так:

{
  "id": "ABC",
  "places": [
    {
      "isSearchable": true,
      "locations": [
        {
          "id": "DEL",
          "loc": {
            "range": "2000-5000 INR"
          }
        },
        {
          "id": "BLG",
          "loc": {
            "range": "1000-3000 INR"
          }
        }
      ]
    }
  ]
}

Я знаю, что мы можем написать javascript функцию в оболочке mon go, но я не знаю, как продвинуться вперед. Я написал что-то вроде этого:

cursor = db.getCollection('locations').find({"places.isSerachable":true});



// Iterate over Cursor object
while(cursor.hasNext()) {
item = cursor.next();
keys = Object.keys(item);

// Iterate over MongoDB doc fields
for (i=0; i-keys.length; i++) {
let field = keys[i];
print( "field:", field, "---",item[keys[i]]);
}

}

Спасибо за помощь!

Ответы [ 2 ]

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

Как это

const data = { "id": "ABC", "places": [{ "isSearchable": true, "locations": [{ "id": "DEL", "loc": { "range": "2000-5000 INR" } }, { "id": "BLG", "loc": { "range": "1000-3000 INR" } } ] }] }

data.places[0].locations.forEach(location => {
  const [ min, max, currency ] = location.loc.range.split(/[ -]/g)
  location.loc.range = { min, max, currency }
})
console.log(data)
0 голосов
/ 22 апреля 2020

Попробуйте это решение:

const obj = {
  "id": "ABC",
  "places": [{
    "isSearchable": true,
    "locations": [{
        "id": "DEL",
        "loc": {
          "range": "2000-5000 INR"
        }
      },
      {
        "id": "BLG",
        "loc": {
          "range": "1000-3000 INR"
        }
      }
    ]
  }]
}
const result = obj.places.map(x => ({
  ...x,
  locations: x.locations.map(y => ({
    ...y,
    loc: {
      range: (() => {
        [min, max, currency] = y.loc.range.replace('-', ' ').split(' ');
        return {
          min,
          max,
          currency
        }

      })()
    }
  }))
}))

console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...