Или c() или list() могат да бъдат добре. Зависи от това дали компонентите са именувани и дали всички имат един и същи тип (за списък). Най-доброто нещо, което можете да направите, е да погледнете генерирания BSON и да видите дали получавате това, което искате. За най-добър контрол на генерирания обект използвайте mongo.bson.buffer и функциите, които работят върху него. Всъщност това е причината подзаявките да се провалят. „коментари“ се създава като подобект, а не като масив. mongo.bson.from.list() е удобен, но не ви дава същия контрол и понякога отгатва погрешно какво да генерира от сложни структури.
Заявката за другия набор от данни обаче може да бъде коригирана така:
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)
Имайте предвид, че определено трябва да използвате буфер тук, тъй като R ще се задави от името с точки.
Надявам се това да изясни проблема ви. Уведомете ме, ако имате допълнителни въпроси.