Albo c() albo list() mogą być w porządku. Zależy od tego, czy komponenty są nazwane i czy wszystkie mają ten sam typ (dla listy). Najlepszą rzeczą do zrobienia jest spojrzenie na wygenerowany BSON i sprawdzenie, czy otrzymujesz to, czego chcesz. Dla najlepszej kontroli generowanego obiektu użyj mongo.bson.buffer i funkcji, które na nim operują. W rzeczywistości właśnie dlatego podzapytania kończą się niepowodzeniem. „komentarze” są tworzone jako podobiekt, a nie tablica. mongo.bson.from.list() jest przydatna, ale nie daje takiej samej kontroli i czasami źle zgaduje, co wygenerować ze skomplikowanych struktur.
Zapytanie dotyczące drugiego zestawu danych można jednak poprawić w następujący sposób:
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)
Zwróć uwagę, że zdecydowanie musisz użyć tutaj bufora, ponieważ R będzie dławić się kropkowaną nazwą.
Mam nadzieję, że to rozwiąże twój problem. Daj mi znać, jeśli masz dodatkowe pytania.