2016-07-13 6 views
1

Я использую R для доступа к таблице MongoDb, содержащей записи из API Google Directions. Хотя я могу получить доступ к значениям _id, я получаю сообщение об ошибке при попытке доступа к другому ключу в базе данных data, который представляет собой массив, содержащий всю информацию о маршрутах. Любая идея, как запросить массив, используя rmongodb?rmongodb не возвращает отдельные значения для ключей

В приведенном ниже коде, я сначала проверю, сколько записей находится в коллекции. Затем, используя mongo.distinct() Я запрашиваю базу данных для всех идентификаторов объектов, а затем я сталкиваюсь с проблемой при попытке получить доступ к следующим данным индекса. Любая идея, почему это происходит? Я включил изображение с информацией об обоих показателях из компаса MongoDB.

enter image description here

> if(mongo.is.connected(mongo) == TRUE) { 
+ help("mongo.count") 
+ mongo.count(mongo, coll) 
+ } 
[1] 106500 



> res <- mongo.distinct(mongo, coll, "_id") 
> head(res) 
$`0` 
{ $oid : "57583d1057aa3d0499a85aab" } 

$`1` 
{ $oid : "57583d1157aa3d0499a85aad" } 

$`2` 
{ $oid : "57583d1257aa3d0499a85aaf" } 

$`3` 
{ $oid : "57583d1357aa3d0499a85ab1" } 

$`4` 
{ $oid : "57583d1457aa3d0499a85ab3" } 

$`5` 
{ $oid : "57583d1557aa3d0499a85ab5" } 



> res <- mongo.distinct(mongo, coll, "data.legs") 
Warning message: 
In mongo.distinct(mongo, coll, "data.legs") 
+0

какая библиотека mongodb вы используете? (Я угадываю 'rmongodb'?) – SymbolixAU

+0

Поле' images.thumbnail.url' находится в базе данных? есть ли в нем данные? – SymbolixAU

+0

Можете ли вы предоставить образец документа? Кроме того, какую конкретную версию MongoDB вы используете? – Stennie

ответ

0

Вы должны быть в состоянии запросить его именно так, как вы пытаетесь.

При отсутствии данных, вот рабочий пример

library(rmongodb) 

mongo <- mongo.create(db = "test") 

## create some data 
lst <- list(lat = -37.9, 
      lon = 144.5, 
      image_url = letters) 

## insert data 
mongo.insert(mongo, "test.array_test", mongo.bson.from.list(lst)) 

В клиенте MongoDB (я использую Robomongo) мы можем видеть данные, и что image_url является массивом

enter image description here

Таким образом, ваш запрос должен работать

## query data on the 'image_url' array 
mongo.distinct(mongo, "test.array_test", key = "image_url") 
# [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" 

W e может вставить больше данных и выполнить один и тот же запрос

lst <- list(lat = -37.8, 
      lon = 144.4, 
      image_url = c("string1","string2")) 

mongo.insert(mongo, "test.array_test", mongo.bson.from.list(lst)) 

mongo.distinct(mongo, "test.array_test", key = "image_url") 
# [1] "a"  "b"  "c"  "d"  "e"  "f"  "g"  "h"  "i"  "j"  "k"  "l"  
# [13] "m"  "n"  "o"  "p"  "q"  "r"  "s"  "t"  "u"  "v"  "w"  "x"  
# [25] "y"  "z"  "string1" "string2" 

 Смежные вопросы

  • Нет связанных вопросов^_^