Как связать R с Mongo и уметь фильтровать по количественным значениям и вложенным ключам
Я пытаюсь соединить R с Mongo, используя 2 пакета: rmongodb и RMongo. Я хотел бы создать из запроса R Монго, который основан на индексе с именем id.
Идентификатор представляет собой целое число из 19 чисел, например 1234567891234567891, которое хранится в монго в числовом формате. Используя rmongodb, я не знаю, как создать запрос, который правильно понимает мой 19-значный индекс, например:
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.append(buf, "id", '6120367800331863610')
query <- mongo.bson.from.buffer(buf)
b <- mongo.find.one(mongo, ns=namespace, query)
или же
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.append.long(buf, "id", 6120367800331863610)
query <- mongo.bson.from.buffer(buf)
b <- mongo.find.one(mongo, ns=namespace, query)
В первой части кода мой запрос выглядит id : 2 6120367800331863610
Id: 2 устанавливает тип данных для строки, а не для numberLong, и мой запрос не дает результатов.
Во второй части моего кода номер, который я даю, меняется на r на:id : 18 6120367800331864064
, Идентификатор теперь правильный 18 представляет NumberLong, но число изменилось. R имеет проблемы с обработкой таких больших чисел, я пытался изменить тип для 6120367800331863610, используя bit64, но тип integer64 не поддерживается mongo.bson.buffer.append.long()
,
Мой второй подход к этой проблеме - использовать пакет RMongo. Используя это, я смог получить идентификатор, который искал, но не могу использовать вложенные ключи:
dbGetQueryForKeys(mongo,namespace,"{'id':6120367800331863610}","{'id': 1, 'data.product': 1}")
Идентификатор правильный, но для data.product я получаю нулевые значения. Когда я меняю ключ на {'id': 1, 'data': 1}
Он дает мне data.frame с идентификатором и анализирует данные в столбце, что является трудоемкой операцией из-за структуры json-типа этой части.
Буду благодарен за любую помощь.