sql >> Databáze >  >> NoSQL >> MongoDB

Jak používat db reference s reaktivními Spring Data MongoDB?

TL;DR

Neexistuje žádný DBRef podpora v reaktivních Spring Data MongoDB a nejsem si jistý, že bude.

Vysvětlení

Projekty Spring Data jsou organizovány do komponent Template API, Converter a Mapping Metadata. Imperativní (blokující) implementace Template API používá k načítání Document imperativní přístup s a převést je na doménové objekty. MappingMongoConverter zejména zpracovává veškerou konverzi a DBRef rozlišení. Toto API funguje v synchronním/imperativním API a používá se pro obě implementace Template API (imperativní a reaktivní).

Opětovné použití MappingMongoConverter bylo logické rozhodnutí při přidávání reaktivní podpory, protože nepotřebujeme duplikovat kód. Jediným omezením je DBRef rozlišení, které neodpovídá modelu reaktivního provádění.

Pro podporu reaktivního DBRef s, převodník je třeba rozdělit na několik bitů a celá manipulace s asociací vyžaduje generální opravu.

Reference:https://jira.spring.io/browse/DATAMONGO-2146

Doporučení

Uchovávejte reference jako klíče/ID v modelu vaší domény a podle potřeby je vyhledejte. zipWith a flatMap jsou vhodné operátory v závislosti na tom, co chcete archivovat (vylepšit model pomocí odkazů, pouze vyhledávat reference).

Související poznámka:Reactive Spring Data MongoDB přichází částečně s omezenou sadou funkcí. Kontextové rozšíření SpEL je funkce, která není podporována, protože tyto komponenty předpokládají imperativní programovací model a tedy synchronní provádění.



  1. Mongoose nečte ze sekundární databáze Mongo

  2. MongoDB běží celkem jako agregace předchozích záznamů až do výskytu hodnoty

  3. Mongo agregace a MongoError:výjimka:BufBuilder se pokusil o grow() na 134217728 bajtů, čímž překročil limit 64 MB

  4. Hledání dat a ignorování času v mongoDB