2016-07-13 4 views
1

Google Directions API의 레코드가 포함 된 MongoDb 테이블에 R을 사용하여 액세스하고 있습니다. _id 값에 액세스 할 수있는 동안 데이터베이스의 다른 키 data에 액세스하려고하면 오류가 발생합니다. 이는 경로에 대한 모든 정보를 포함하는 배열입니다. rmongodb을 사용하여 배열을 쿼리하는 방법을 알고 싶습니다.rmongodb가 키의 고유 값을 반환하지 않음

아래 코드에서 먼저 컬렉션에있는 레코드 수를 확인합니다. 그런 다음 mongo.distinct()을 사용하여 데이터베이스에 모든 개체 ID를 쿼리 한 후 다음 인덱스 - 데이터에 액세스하려고 할 때 문제가 발생합니다. 왜 이런 일이 일어나는 지 아십니까? MongoDB 나침반의 두 인덱스에 대한 정보가 포함 된 이미지를 포함 시켰습니다.

> 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

enter image description here

당신은 당신이하려고하는대로 정확히를 조회 할 수 있어야한다. 데이터가없는

는 여기에 MongoDB를 클라이언트 (나는 Robomongo를 사용하고) 우리가 데이터를 볼 수 있습니다에서 동작하는 예제

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)) 

, 그리고 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 더 많은 데이터를 삽입하고 동일한 쿼리를 실행할 수 있습니다.

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"