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

shoda pole mongodb

Zajímavé..Problém je..operátory $in a $or se aplikují na prvky pole, které porovnáváte proti každý dokument v kolekci, ne na prvky polí v dokumentech.. Abychom shrnuli vaši otázku:Chcete, aby se jednalo o shodu, pokud je některý z dokumentů v kolekci náhodou podmnožinou předaného pole. Nenapadá mě způsob, jak to udělat, pokud neprohodíte svůj vstup a výstup. Chci říct, že... Vezměme váš první vstup:

db.test.find( {a: [1,2,3,4]} );

Zvažte umístění tohoto do dočasné kolekce say,temp as:

db.temp.save( {a: [1,2,3,4]} );

Nyní iterujte každý dokument v testovací kolekci a „najděte“ jej v temp pomocí operátoru $all, abyste se ujistili, že je zcela obsažen, tj. proveďte něco takového:

foreach(doc in test)
{ db.temp.find( { a: { $all: doc.a } } ); }


Toto je určitě řešení! Nejsem si jistý, jestli mi nechybí nějaký jiný operátor, který by tuto práci mohl dělat.



  1. připojit ECONNREFUSED 127.0.0.1:27017'

  2. MongoDB skupina a součet s id jako klíčem

  3. Nainstalujte MongoDB na Manjaro

  4. Vrátit pouze konkrétní pole pro dotaz v Spring Data MongoDB