Как связать 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 6120367800331863610Id: 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-типа этой части.

Буду благодарен за любую помощь.

0 ответов

Другие вопросы по тегам