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

MongodDB $pull pouze jeden prvek z pole

Ne, nic takového v současnosti neexistuje. Mnoho lidí již tuto funkci požadovalo a můžete ji sledovat v mongodb Jira . Pokud vidíte, není vyřešen a také není naplánován (což znamená, že v blízké budoucnosti nemáte štěstí).

Jedinou možností je použít aplikační logiku k dosažení tohoto cíle:

  1. najděte požadovaný prvek, který má userTags jako foo
  2. iterujte přes userTags a odeberte z něj jednoho foo
  3. aktualizujte tento prvek novými userTags

Mějte na paměti, že tato operace naruší atomicitu, ale protože Mongo neposkytl nativní metodu, jak to udělat, atomicitu narušíte jakýmkoliv způsobem.

K nové odpovědi jsem přesunul jedno alternativní řešení, protože na tuto otázku neodpovídá, ale představuje jeden z přístupů k refaktorování existujícího schématu. Také se stal tak velkým, že začal být mnohem větší než původní odpověď.



  1. Mongo MapReduce vyberte nejnovější datum

  2. MongoDB filtr více dílčích dokumentů

  3. MongoDB přidat do pole pro připojení kolekce od základního

  4. Jak importovat pouze neexistující dokumenty?