Опитах се да разбера вграждането в Mongodb, но не можах да намеря достатъчно добра документация. Свързването не се препоръчва, тъй като записите не са атомарни в документи и също така има две справки. Някой знае ли как да реши това или бихте ми предложили да отида на graph dbs като neo4j.
Опитвам се да създам приложение, което ще се нуждае от връзки много към много. За да обясня, ще взема пример с библиотека. Той може да предлага книги на потребителя въз основа на книги, които неговите приятели четат и съседи (подобно мислещи) потребители, които четат.
Има потребители и книги. Потребителите заемат книги и имат приятели, които са други потребители
- Имайки предвид даден потребител, имам нужда от всички книги, които чете, и броя на общите му приятели за книгата
- Като имам книга, имам нужда от всички хора, които я четат. Може да се даде потребител A, това ще върне пресечната точка на хора, които четат книга, и приятели на потребител A. Това е взаимно приятелство
Потребители = [
{ name: 'xyz', 'id':'000000', friend_ids:['949583','958694']} { name: 'abc', 'id':'000001', friend_ids:['949582','111111']} ]
Книги = [
{'book':'da vinci code', 'author': 'dan brown', 'readers'=['949583', '000000']} {'book':'iCon', 'author': 'Young', 'readers'=['000000', '000001']} ]
Както се вижда по-горе, обикновено имам нужда от два документа, ако взема mongo DB, тъй като мога да направя двупосочно търсене. Дублирането (вграждането) на документ в друг може да доведе до много дублиране (тези схеми могат да съхраняват много повече информация от показаната).
Правилно ли моделирам данните си? Може ли това да се направи ефективно в mongodb или трябва да погледна graph dbs.