0

我想使用 rmongodb 访问 R 中的 MongoDB 数据库。我尝试构建以下查询:

{'$and': [{_id: {'$gte': '2013-01-01'}}, {_id: {'$lte': '2013-01-10'}}]}

我尝试了三种不同的方法来创建 bson 对象,但都没有运气。

方法一:

buf = mongo.bson.buffer.create()
mongo.bson.buffer.start.array(buf, '$and')
mongo.bson.buffer.append(buf, '_id', list('$gte'='2013-01-01'))
mongo.bson.buffer.append(buf, '_id', list('$lte'='2013-01-10'))
mongo.bson.buffer.finish.object(buf)
bson = mongo.bson.from.buffer(buf)

方法二:

    buf = mongo.bson.buffer.create()
mongo.bson.buffer.start.array(buf, '$and')
mongo.bson.buffer.start.object(buf, '_id')
mongo.bson.buffer.append(buf, '$gte', '2013-01-01')
mongo.bson.buffer.finish.object(buf)
mongo.bson.buffer.start.object(buf, '_id')
mongo.bson.buffer.append(buf, '$lte', '2013-01-10')
mongo.bson.buffer.finish.object(buf)
mongo.bson.buffer.finish.object(buf)
bson = mongo.bson.from.buffer(buf)

方法三:

mongo.bson.from.list(list('$and'=list('_id' = list('$lte'='2013-01-10'), '_id' = list('$gte'='2013-01-01'))))

它们都不起作用。全部返回空结果。

我搜索了一段时间,唯一类似的问题是rmongodb: using $or in query 解决方案是改用 RMongo,它不适用于 R 2.50。

我被困在这个问题好几天了。如果我找不到解决方案,我将不得不用 python 编写一个外部脚本并从 R 中调用它。

4

2 回答 2

0

我不知道 R,但您实际上不需要$and用于该查询。这有点简单,应该更容易翻译成 R:

{_id: {'$gte': '2013-01-01', '$lte': '2013-01-10'}}
于 2013-01-11T06:18:01.407 回答
0

您创建 mongo bson 数组的方式是错误的。你缺少零件

mongo.bson.buffer.start.object(buf, "0")
...
mongo.bson.buffer.finish.object(buf)
mongo.bson.buffer.start.object(buf, "1")
...
mongo.bson.buffer.finish.object(buf)

有关工作示例,请查看以下最新评论: https ://github.com/mongosoup/rmongodb/issues/17

我希望这暂时有效。我正在研究一个更简单的解决方案!

于 2013-11-22T19:04:07.833 回答