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.