Menarik..Masalahnya adalah.. $in dan operator $or diterapkan pada elemen larik yang Anda bandingkan dengan setiap dokumen dalam koleksi, bukan pada elemen larik dalam dokumen..Untuk meringkas pertanyaan Anda:Anda ingin itu cocok, jika salah satu dokumen dalam koleksi kebetulan merupakan subset dari array yang dilewati. Saya tidak dapat memikirkan cara untuk melakukan ini kecuali Anda menukar input dan output Anda. Maksud saya adalah..Mari kita ambil input pertama Anda:
db.test.find( {a: [1,2,3,4]} );
Pertimbangkan untuk memasukkan ini ke dalam koleksi sementara say,temp as:db.temp.save( {a: [1,2,3,4]} );
Sekarang ulangi setiap dokumen dalam kumpulan pengujian dan 'temukan' dalam temp, dengan operator $all untuk memastikan dokumen tersebut benar-benar terkandung, yaitu, lakukan sesuatu seperti ini:foreach(doc in test)
{
db.temp.find( { a: { $all: doc.a } } );
}
Ini jelas merupakan solusi! Saya tidak yakin apakah saya kehilangan operator lain yang dapat melakukan pekerjaan ini.