Buď c() nebo list() může být v pořádku. Záleží na tom, zda jsou komponenty pojmenovány a zda mají všechny stejný typ (pro seznam). Nejlepší věc, kterou můžete udělat, je podívat se na vygenerovaný BSON a zjistit, zda dostáváte to, co chcete. Pro nejlepší kontrolu nad generovaným objektem použijte mongo.bson.buffer a funkce, které s ním pracují. Ve skutečnosti to je důvod, proč dílčí dotazy selhávají. 'komentáře' se vytváří spíše jako podobjekt než jako pole. mongo.bson.from.list() je šikovný, ale nedává vám stejnou kontrolu a někdy špatně odhadne, co vygenerovat ze složitých struktur.
Dotaz na druhou sadu dat lze opravit takto:
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)
Všimněte si, že zde rozhodně musíte použít vyrovnávací paměť, protože R se dusí tečkovaným názvem.
Doufám, že to vyřeší váš problém. Pokud máte nějaké další otázky, dejte mi vědět.