вставка mongodb () с поиском вверх?

#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>