Если я правильно понял вопрос, вы хотите обновить документ с содержимым другого документа, но только те поля, которые еще не присутствуют, и полностью игнорировать уже установленные поля (даже если это другое значение).
Невозможно сделать это в одной команде.
Сначала вы должны запросить документ, выяснить, что вы хотите $set
, а затем обновить его (используя старые значения в качестве фильтра соответствия, чтобы убедиться, что вы не получаете параллельных обновлений между ними.
Другое чтение вашего вопроса состояло бы в том, что вы довольны $set
, но не хотите для явного задания всех полей. Как вы могли бы передать данные?
Вы знаете, что можете сделать следующее:
db.collection.update( { _id:...} , { $set: someObjectWithNewData }
Я посмотрел ближе на то, как angular-cli обрабатывает глобальные стили, и эта пересмотренная конфигурация сработала для меня:
{
// Process the component styles
exclude: path.resolve(__dirname, 'src/assets/styles/styles'),
test: /\.(scss)$/,
use: [
{ loader: 'raw-loader' }, // Load component css as raw strings
{
loader: 'sass-loader', // Compiles Sass to CSS, using Node Sass by default
options: {
sourceMap: true
}
},
]
},
{
// Process the global tailwind styles
include: path.resolve(__dirname, 'src/assets/styles/styles'),
test: /\.(scss)$/,
use: [
{
loader: 'style-loader',
options: {
sourceMap: false
}
},
{
loader: 'postcss-loader', // Process tailwindcss,
options: {
plugins: [
tailwindcss('./tailwind.js'),
require('autoprefixer'),
],
}
},
{
loader: 'sass-loader', // Compiles Sass to CSS, using Node Sass by default
options: {
sourceMap: false
}
},
]
}
Решения заключаются в том, чтобы обрабатывать компонент и глобальные стили отдельно. raw-loader работает лучше, чем css-loader и to-string-loader. Этот dev-конфигуратор с style-loader также позволяет выполнять горячую замену модуля при редактировании стилей компонента и попутного ветра.