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

Nelze získat krytý dotaz pro sdílenou kolekci v MongoDB

Stejně jako v MongoDB 2.6 nezískáte plně pokrytý fragmentovaný dotaz, protože existuje další dotaz, který kontroluje, zda dotyčný fragment vlastní daný dokument (viz SERVER-5022 v nástroji pro sledování problémů MongoDB).

mongos router filtruje dokumenty, které se nacházejí na datovém fragmentu, ale které by tam podle metadat sdíleného clusteru neměly žít.

Dokumenty mohou existovat na více než jednom fragmentu, pokud:

  • Dochází k migraci bloků probíhá:dokumenty jsou zkopírovány z datového fragmentu dárce do cílového datového fragmentu a nejsou z datového fragmentu dárce odstraněny, dokud není migrace bloku úspěšně dokončena.

  • Dokumenty „osiřely“ na fragmentu v důsledku neúspěšné migrace nebo neúplného vyčištění. Existuje cleanupOrphaned příkaz admin v MongoDB 2.6, který lze spustit proti rozštěpenému mongod k odstranění osiřelých dokumentů.

Toto omezení pokrytých dotazů je uvedeno v Limitech:Pokryté dotazy ve sdílených klastrech sekce dokumentace MongoDB, ale měla by být také zvýrazněna v tutoriálu na Vytváření pokrytých dotazů . Zvedl jsem DOCS-3820 aby to bylo jasnější.




  1. Nalezení dalšího dokumentu v MongoDb

  2. Index v MongoDB

  3. PyMongo a multiprocessing:ServerSelectionTimeoutError

  4. Index vnořených dokumentů v mongo