Enten c() eller list() kan være ok. Afhænger af om komponenterne er navngivet, og om de alle har samme type (til liste). Den bedste ting at gøre er at se på den genererede BSON og se, om du får det, du ønsker. For den bedste kontrol over det genererede objekt, brug mongo.bson.buffer og de funktioner, der fungerer på det. Det er faktisk derfor, underforespørgslerne fejler. 'kommentarer' bliver oprettet som et underobjekt snarere end et array. mongo.bson.from.list() er praktisk, men det giver dig ikke den samme kontrol, og nogle gange gætter det forkert om, hvad der skal genereres fra komplicerede strukturer.
Forespørgslen på det andet datasæt kan korrigeres således:
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)
Bemærk, at du helt sikkert skal bruge en buffer her, da R vil kvæles i det stiplede navn.
Jeg håber, at dette løser dit problem. Fortæl mig, hvis du har yderligere spørgsmål.