Rmongodb: mit $ oder in Abfrage

Ich habe Mühe, eine Abfrage mit $ oder innerhalb von R und Rmongodb zu erstellen. Was ich emulieren möchte, ist das von cmdline mongo:

db.people.find( { $or : [ {"person.cell": { $exists : true } }, {"person.home": { $exists : true } } ] })

Ich möchte Datensätze abrufen, bei denen entweder person.cell nicht null oder person.home nicht null ist. Ich kann jedes einzeln abfragen, aber keine Daten zurückerhalten, wenn ich den Puffer in rmongodb mit $ oder erstelle. Der R-Code mit rmongodb sieht folgendermaßen aus:

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)

Das gibt keine Datensätze zurück, keinen Fehler, nur eine leere Menge. Wie bereits erwähnt, kann ich eine Suche in person.cell oder person.home durchführen und Ergebnisse erhalten, aber nicht, wenn ich versuche, ein $ oder (in rmongodb) zu erstellen, sodass ich Datensätze mit person.cell oder person.home abrufen kann .

Ich habe es auch versucht:

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)

Aber ich erhalte das gleiche Ergebnis für leere Mengen (und "b" sieht genauso aus, wenn ich es ansehe). Ich stecke in diesem Fall fest.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage