#node.js #database #mongodb #mongoose #nosql
#node.js #База данных #mongodb #мангуст #nosql
Вопрос:
Как мне удалить документ в MongoDB, который ссылается на другие документы?
Допустим, я хочу удалить a book
: в книге есть author
ссылка, на которую она ссылается, а также оглавление, которое является ссылкой. Теперь, когда я удалю book
это, я наверняка захочу удалить table of contents
это, но, возможно, не author
это, поскольку то же author
самое могло быть написано в разных книгах, которые все еще находятся в моей базе данных и ссылаются на этого автора, поэтому я не хочу удалять это.
Но тогда author
объект, подлежащий удалению, сам может ссылаться на другие объекты, а также на table of contents
объект. Тогда кажется необычайно сложным удалить один элемент в mongoose / mongodb? Или я чего-то не понимаю? Есть ли более простой способ?
Есть ли способ, например, удалить все объекты в коллекциях, на которые больше ничего не ссылается?
Комментарии:
1. Вы используете Postgres или другую СУБД.
2. Ну, я использую MongoDB?
3. Монго не является реляционным, как и мангуст. Схемы Mongo основаны на документах, поэтому вы либо сохраняете избыточную информацию в каждом документе (например, author), либо вручную, в коде, проверяете все связанные коллекции и очищаете там данные.
4. Вы правы, и у вас есть справедливая точка зрения: я изначально начал с Mongo и теперь все чаще и чаще спрашиваю себя, почему, поскольку мне кажется, что мои данные все больше и больше разделяются и являются более реляционными, чем я изначально думал. Тем не менее, Mongo не является JSON, и рекомендуется разделять данные и хранить документы в разных коллекциях и ссылаться на них. И мой вопрос был о том, как работает удаление в MongoDB, а не о том, является ли MongoDB правильным выбором.