How to construct rmongodb query using $and operato

2019-11-01 09:24发布

我想用rmongodb在R.我试图构造下面的查询访问的MongoDB数据库:

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

我尝试三种不同的方法来创建对象BSON,没有运气所有。

方法1:

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)

方法2:

    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)

方法3:

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

他们没有工作。 所有返回空的结果。

我搜索了一段时间,唯一类似的问题,问是rmongodb:使用$或查询的解决方案是使用RMongo代替,这是不可用的R 2.50。

我被困在这个问题上了好几天。 如果我不能找到一个解决方案,我会写一个外部脚本与Python和R.叫它

Answer 1:

我不知道R,但你并不真正需要使用$and该查询。 这是一个有点简单,应该更容易转化为R:

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


Answer 2:

您创建一个蒙戈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

我希望这个作品现在。 我工作的一个更简单的解决方案!



文章来源: How to construct rmongodb query using $and operator