#sql #mongodb #nosql
#sql #mongodb #nosql
Вопрос:
Я новичок, когда дело доходит до mongodb, поэтому прошу прощения, если этот вопрос простой, но я нигде не смог найти ответа. У меня есть база данных с одной коллекцией под названием genre, и у каждого объекта есть идентификатор и имя, я хочу создать новую коллекцию под названием Event, которая имеет идентификатор, имя, genreid. Возможно ли создать объект события, но вместо передачи идентификатора жанра запрашивать идентификатор на основе названия жанра? Я знаю, что в SQL это было бы
Insert into event(id,name,genreID) values (01,test,(select Id from genre where genre.name ='rock'));
Возможно ли это в Mongo? Заранее приветствую
Комментарии:
1. Используете ли вы mongoose для обработки MongoDB? Используете ли вы это в nodejs или что это за платформа?
2. Командная строка в ubuntu
Ответ №1:
Обновить:
Для вставки вам нужно сначала найти _id жанра на основе названия, а затем использовать его _id для создания документа события.
Попробуйте это :
Если вы используете оболочку Mongo, вы можете сделать это:
var genre = db.genres.findOne({name : "genre_name"});
db.events.insert({
name : "event_name",
genreid : genre._id
})
Прочитайте документацию по методам оболочки Mongodb для получения дополнительной информации.
Если вы используете mongoose и nodejs, вы можете использовать это:
Genre.findOne({name : "genre_name"}).then(genre => {
var event = new Event();
event.genreid = genre._id;
event.name = "event_name";
return event.save();
}).then(event=>{
//event is the newly created event
});
Комментарии:
1. Это будет работать для запросов, чтобы найти все события с определенным жанром, но я хочу вставить данные в события. но для GenreId я хочу использовать запрос здесь вместо простого «01» . что-то вроде этого . <предварительно><код>db.getCollection(«исполнитель»).insertOne({ «_id»: «0», «имя»: «Андерсон Паак», «тип»: «аттракцион», «genre_id»: db.getCollection(«жанр»).find({ «_name»: «Клуб»},{«_id»:1}) }).</ код></pre>