0

rmongodb を使用して、R で MongoDB データベースにアクセスしたいと考えています。次のクエリを作成しようとしました。

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

私は 3 つの異なる方法で 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 解決策は、R 2.50 では利用できない代わりに RMongo を使用することでした。

私はこの問題で数日間立ち往生しています。解決策が見つからない場合は、Python で外部スクリプトを作成し、R から呼び出す必要があります。

4

2 に答える 2

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 に答える
0

R はわかりませんが、実際$andにそのクエリに使用する必要はありません。これは少し単純で、R に変換しやすいはずです。

{_id: {'$gte': '2013-01-01', '$lte': '2013-01-10'}}
于 2013-01-11T06:18:01.407 に答える