sql >> Database >  >> NoSQL >> MongoDB

mongodb-array-overeenkomst

Interessant..Het probleem is..de operatoren $in en $or worden toegepast op de elementen van de array die u met vergelijkt elk document in de verzameling, niet op de elementen van de arrays in de documenten.. Om uw vraag samen te vatten:u wilt dat het een overeenkomst is, als een van de documenten in de verzameling een subset van de doorgegeven array. Ik kan geen manier bedenken om dit te doen, tenzij je je invoer en uitvoer omwisselt. Wat ik bedoel is..Laten we je eerste invoer nemen:

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

Overweeg om dit in een tijdelijke verzameling te plaatsen, zeg,temp as:

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

Itereer nu elk document in de testverzameling en 'vind' het in temp, met de $all-operator om ervoor te zorgen dat het volledig ingesloten is, d.w.z. doe zoiets als dit:

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


Dit is zeker een oplossing! Ik weet niet zeker of ik een andere operator mis die dit werk kan doen.



  1. MongoDB fulltext zoeken + tijdelijke oplossing voor gedeeltelijke woordovereenkomst

  2. Redis wordt niet bijgewerkt als er veel verzoeken tegelijk zijn

  3. Variabelen doorgeven aan mongo-updates?

  4. Hoe de subdocumentarray in mangoest / mongodb sorteren?