#node.js #reactjs #mongodb
#node.js #reactjs #mongodb
Вопрос:
У меня есть документ, который выглядит следующим образом:
{
"_id" : ObjectId("5f55fdede873f132ec09207e"),
"edition_id" : NumberInt(35889464),
"title" : "TEAM ROCKET EDITION",
"date" : "2020-09-19T10:00:00.000 0000",
"homescreen" : {
"image" : "https://media3.giphy.com/media/oOfLwhLyRUoRW/giphy.gif",
"song" : "5T8l7ciAo4H3NGFld8c9Ow"
},
"teams" : [
{
"team_id" : "8675309",
"team_name" : "",
"team_code" : ""
},
{
"team_id" : "7779311",
"team_name" : "",
"team_code" : ""
},
{
"team_id" : "79369254",
"team_name" : "",
"team_code" : ""
}
]
}
Я пытаюсь сформировать запрос MongoDB, который найдет соответствие team_id
и обновит team_name
для этого элемента массива. Я попробовал несколько вещей в этой структуре:
import { connectToDatabase } from 'utils/mongodb';
export default async (req, res) => {
const { db } = await connectToDatabase();
const {
query: { edition_id, team_name, team_id },
} = req;
console.log({ req });
const edition = await db.collection('editions').findOneAndUpdate(
{ edition_id: parseInt(edition_id) },
{
$set: {
},
},
);
res.json(edition);
};
но я не могу сформулировать правильный запрос.
Ответ №1:
Пожалуйста, проверьте этот запрос,
const edition = await db.collection('editions').updateOne(
{ 'teams.team_id': '8675309' },
{
$set: {
'teams.$.team_name': 'team_name_value'
},
},
);
Комментарии:
1. Это сработало! Однако мне нужно, чтобы оно также соответствовало
edition_id
, поскольку то жеteam_id
самое будет существовать в нескольких документах . , ,