我正在尝试通过 R 驱动程序 rmongodb 查询 MongoDB。以下查询适用于 cmd 行(结果:204,915):
db.col1.count(
{
$or: [
{'status.time':{$gt: ISODate('2013-09-10 00:00:00')}},
{'editings.time':{$gt: ISODate('2013-09-10 00:00:00')}}
]
} );
把它翻译成R,我试过:
d<-strptime('2013-09-10', format='%Y-%m-%d')
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.start.array(buf, "$or")
mongo.bson.buffer.start.object(buf, 'status.time')
mongo.bson.buffer.append(buf, "$gt", d)
mongo.bson.buffer.finish.object(buf)
mongo.bson.buffer.start.object(buf, 'editings.time')
mongo.bson.buffer.append(buf, "$gt", d)
mongo.bson.buffer.finish.object(buf)
编辑:这是查询在 R 中打印的内容:
>mongo.bson.from.buffer(buf)
$or : 4
status.time : 3
$gt : 9 79497984
editings.time : 3
$gt : 9 79497984
使用...执行查询
mongo.count(mongo, db1.col1, query=mongo.bson.from.buffer(buf))
...给我“-1”。我尝试了 BSON 的几种变体,结果都一样。但是,仅使用其中一个条件(没有 $or 数组)是可行的。有人看到我的错误吗?
顺便说一句:我知道线程rmongodb: using $or in query,但是,使用替代驱动程序 RMongo 的建议答案不满足我的代码的其他要求。