Baik c() atau list() bisa baik-baik saja. Tergantung pada apakah komponen diberi nama dan apakah semuanya memiliki tipe yang sama (untuk daftar). Hal terbaik untuk dilakukan adalah melihat BSON yang dihasilkan dan melihat apakah Anda mendapatkan apa yang Anda inginkan. Untuk kontrol terbaik dari objek yang dihasilkan, gunakan mongo.bson.buffer dan fungsi yang beroperasi di atasnya. Sebenarnya inilah mengapa sub-kueri gagal. 'komentar' sedang dibuat sebagai subobjek daripada array. mongo.bson.from.list() berguna tetapi tidak memberi Anda kontrol yang sama dan terkadang salah menebak tentang apa yang harus dihasilkan dari struktur yang rumit.
Kueri pada kumpulan data lain dapat dikoreksi seperti ini:
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.start.object(buf, "name.first")
mongo.bson.buffer.append(buf, "$in", c("Alex", "Horst"))
mongo.bson.buffer.finish.object(buf)
criteria <- mongo.bson.from.buffer(buf)
Perhatikan bahwa Anda pasti perlu menggunakan buffer di sini karena R akan mencekik nama bertitik.
Saya harap ini meluruskan masalah Anda. Beri tahu saya jika Anda memiliki pertanyaan lebih lanjut.