MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:osadzeni użytkownicy w komentarzach

Możesz uniknąć N+1 - problem setek żądań używających $in -zapytania. Rozważ to:

Post {
  PosterId: ObjectId
  Text: string
  Comments: [ObjectId, ObjectId, ...] // option 1
}

Comment {
  PostId: ObjectId // option 2 (better)
  Created: dateTime,
  AuthorName: string,
  AuthorId: ObjectId,
  Text: string
}

Teraz możesz znaleźć komentarze do postów za pomocą $in zapytanie, a także możesz łatwo znaleźć wszystkie komentarze zgłoszone przez określonego autora.

Oczywiście możesz również przechowywać komentarze jako osadzoną tablicę w poście i wykonać $in zapytanie o informacje o użytkowniku podczas pobierania komentarzy. W ten sposób nie musisz denormalizować nazw użytkowników i nadal nie potrzebujesz setek zapytań.

Jeśli zdecydujesz się na denormalizację nazw użytkowników, będziesz musiał zaktualizować wszystkie komentarze, które kiedykolwiek zostały przez tego użytkownika wprowadzone, gdy użytkownik zmieni np. jego imię. Z drugiej strony, jeśli takie operacje nie zdarzają się zbyt często, nie powinno to być wielkim problemem. A może nawet lepiej jest zapisać nazwę użytkownika, gdy dodał komentarz, w zależności od Twoich wymagań.

Ogólny problem z osadzaniem polega na tym, że różni autorzy będą pisać do tego samego obiektu , więc będziesz musiał użyć modyfikatorów atomowych (np. $push ). Czasami jest to trudniejsze w użyciu z programistami (choć nie znam się na mongoalchemii) i ogólnie mniej elastyczne.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zatrzymać Mongo DB jednym poleceniem?

  2. Jak usunąć wiele kolekcji mongodb naraz?

  3. jak poradzić sobie z błędem rozłączenia dla MongoDB

  4. Agregat Pymongo:filtruj według liczby pól (dynamiczny)

  5. I operator mongoosastyczny (filtr)