2013-01-11 75 views
0

我想用rmongodb在R.我試圖構造下面的查詢訪問的MongoDB數據庫構建rmongodb查詢:

{'$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: using $or in query 解決方案是使用RMongo,而不是R 2.50。

我被困在這個問題好幾天了。如果我找不到解決方案,我將不得不使用python編寫外部腳本,並從R中調用它。

回答

0

我不知道R,但實際上並不需要爲該查詢使用$and。這是一個更簡單,應該更容易翻譯爲R:

{_id: {'$gte': '2013-01-01', '$lte': '2013-01-10'}} 
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

我希望這個作品現在。我正在研究一個更簡單的解決方案!