rmongodb: usando $ o en la consulta
Estoy luchando para crear una consulta usando $ o dentro de R y rmongodb. Lo que me gustaría emular es esto de cmdline mongo:
db.people.find( { $or : [ {"person.cell": { $exists : true } }, {"person.home": { $exists : true } } ] })
Me gustaría extraer registros en los que o bien person.cell no es nulo o person.home no es nulo. Puedo consultar cada uno individualmente, pero no puedo recuperar los datos cuando creo el búfer en rmongodb con $ o, el código R que usa rmongodb se parece a esto:
l <- list("$exists"="true")
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.start.array(buf, "$or")
mongo.bson.buffer.append.list(buf, "person.cell", l)
mongo.bson.buffer.append.list(buf, "person.home", l)
mongo.bson.buffer.finish.object(buf)
b <- mongo.bson.from.buffer(buf)
mongo.find(mongo, "work.people", b)
Eso no devuelve ningún registro, ningún error, solo un conjunto vacío. Como mencioné, puedo hacer un hallazgo en person.cell o person.home y obtener resultados, pero no cuando trato de hacer $ o (en rmongodb) de modo que extraiga registros con person.cell o person.home .
También he intentado esto:
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.start.array(buf, "$or")
mongo.bson.buffer.start.object(buf, "person.cell")
mongo.bson.buffer.append(buf, "$exists", "true")
mongo.bson.buffer.finish.object(buf)
mongo.bson.buffer.start.object(buf, "person.home")
mongo.bson.buffer.append(buf, "$exists", "true")
mongo.bson.buffer.finish.object(buf)
mongo.bson.buffer.finish.object(buf)
b <- mongo.bson.from.buffer(buf)
mongo.find(mongo, "work.people", b)
Pero obtengo el mismo resultado de conjunto vacío (y "b" se ve igual cuando lo veo). Estoy atascado en este.