#mongodb #mongodb-query
#mongodb #mongodb-запрос
Вопрос:
Я хочу отменить объект MongoDB, возможно, с помощью агрегации $project, но я точно не знаю, какие поля будут содержаться в объекте. Существует ли какой-либо тип подстановочного знака, который можно было бы использовать для достижения этой цели?
Например.
{ id : ...,
details: {
field1: "value",
field2: "value"
}
}
Для:
{
field1: "value",
field2: "value
}
Комментарии:
1. вы можете сделать это
{ field1: "$details.field1", field2: "$details.field2" }
на стадии проекта, в противном случае вы можете использовать этап агрегации $replaceRoot.2. Спасибо за вашу помощь! Я знаю, что я могу спроецировать этот путь на известное поле. Тем не менее, имена полей в этом примере field1 и field2 заранее неизвестны. Поэтому мне нужно что-то вроде #: «$details.#». Я рассмотрю предложение $replaceRoot!
Ответ №1:
В итоге я использовал $replaceRoot, как предложил turivishal . Спасибо!
{
$replaceRoot: {
newRoot: {
$mergeObjects: ["$ROOT", "$details"]
}
}
}