Как передать переменные, которые объединяются в запросах MongoDB? - PullRequest
1 голос
/ 29 февраля 2020

Представленная ниже конкатенация 'cars.$.'+item не работает в запросе MongoDB. L oop должен запросить 'cars.color', 'cars.year', 'cars.manufacturer' Как вы пишете это так, чтобы оно проходило правильно?

let car ={
color: 'blue',
year: 2007,
manufacturer: 'Honda'
}  

Object.keys(car).forEach(key => {
  col.updateOne({'cars.$.'+key: car[key]});
});

1 Ответ

1 голос
/ 29 февраля 2020

Вам нужны квадратные скобки для динамического построения ключа объекта в JS:

col.updateOne(query, { $set: {['cars.$.'+key]: car[key]} });

Также вместо запуска updateOne в al oop, который вызывает базу данных несколько раз, вы можете создать один $set заявление:

let car ={
   color: 'blue',
   year: 2007,
   manufacturer: 'Honda'
}

let set = {};

Object.keys(car).forEach(key => { set['car.' + key] = car[key] });

let update = { $set: set }
console.log(update);

Подробнее о том, как использовать $set здесь

...