Как удалить элементы в MongoDB / Mongoose и убедиться, что в моей базе данных не будет объектов, на которые нет ссылок?

#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 правильным выбором.