sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb array matching

Interessant..Problemet er..$in- og $or-operatorerne bliver anvendt på de elementer i arrayet, som du sammenligner mod hvert dokument i samlingen, ikke på elementerne i arrays i dokumenterne..For at opsummere dit spørgsmål:Du ønsker, at det skal være et match, hvis nogle af dokumenterne i samlingen tilfældigvis er en undergruppe af det beståede array. Jeg kan ikke komme i tanke om en måde at gøre dette på, medmindre du bytter dit input og output. Hvad jeg mener er..Lad os tage dit første input:

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

Overvej at sætte dette i en midlertidig samling, siger,temp som:

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

Generer nu over hvert dokument i testsamlingen og 'find' det i temp, med $all-operatøren for at sikre, at det er fuldstændig indeholdt, dvs. gør noget som dette:

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


Dette er bestemt en løsning! Jeg er ikke sikker på, om jeg mangler en anden operatør, der kan udføre dette job.



  1. Hent en enkelt ejendom fra dokument

  2. 20 bemærkelsesværdig forskel mellem Hadoop 2.x og Hadoop 3.x

  3. C# Mongodb kartesisk produkt af dokumenter med flere objekter

  4. MongoDB-replikering går ned og vil ikke starte op igen