Интересно..Проблемът е..операторите $in и $or се прилагат към елементите на масива, с които сравнявате с всеки документ в колекцията, а не върху елементите на масивите в документите.. За да обобщим въпроса ви:искате да е съвпадение, ако някой от документите в колекцията е подмножество от предадения масив. Не мога да измисля начин да направя това, освен ако не размените входа и изхода. Това, което имам предвид е... Нека вземем първия ви вход:
db.test.find( {a: [1,2,3,4]} );
Помислете дали да не поставите това във временна колекция, например,temp като:db.temp.save( {a: [1,2,3,4]} );
Сега повторете всеки документ в тестовата колекция и го „намерете“ във temp, с оператора $all, за да се уверите, че е напълно включен, т.е. направете нещо подобно:foreach(doc in test)
{
db.temp.find( { a: { $all: doc.a } } );
}
Това определено е заобиколно решение! Не съм сигурен дали ми липсва някой друг оператор, който може да свърши тази работа.