mongodb
  • rmongo
  • 2013-01-23 44 views 1 likes 
    1

    我想從R使用RMongo查詢mongo數據庫並返回一對嵌套文件的值。RMongo dbGetQueryForKeys(),「鍵」的結構是什麼,以及如何對它們進行分鍵?

    翻翻爲RMongo的文檔,我的理解下面的查詢:

    output <- dbGetQueryForKeys(mongo, 'test_data', '{"foo": "bar"}', '{"foo":1}') 
    

    這裏的參數是...

    db = mongo 
    collection = 'test_data' 
    query = '{"foo": "bar"}' 
    keys = 'Specify a set of keys to return.' 
    

    什麼是'{"foo":1}' 1?這個鍵集的結構是什麼?檢查對this blog post,我發現喜歡的格式:

    結果< - dbGetQueryForKeys(蒙戈, 「項」,「{ '出版日期':{ '$ GTE': '2011-04-01',「$ LT ':'2011-05-01'}}「,」{'publish_date':1,'rank':1}「)

    因此,顯然,鍵需要值1?

    如何獲得嵌套文檔的密鑰?如果我想要的東西像...

    output <- dbGetQueryForKeys(mongo, 'test_data', '{"foo": "bar"}', '{"foo1.foo2.foo3.foo4":1,"foo1.foo2.foo3.bar4":1}') 
    

    對於嵌套的鍵,我目前正在返回更多的東西一樣......

         X_id 
    1 50fabd42a29d6013864fb9d7 
                           foo1 
    1 { "foo2" : { "foo3" : { "foo4" : "090909" , "bar4" : "1"}}} 
    

    ...其中output[,2]是一長串字符串,而不是兩個單獨的變量,用於與foo4和bar4關聯的值(「090909」,「1」),正如我所預料的那樣。

    回答

    0

    '{「foo」:1}'中的1是什麼?這個鍵集的結構是什麼?

    這些密鑰是query projections返回在MongoDB中read operations。值「1」表示包含特定的字段,「0」不包括。默認行爲是在投影中包含所有字段。

    如何獲取嵌套文檔的密鑰?

    對於嵌套鍵,我目前正在返回一些更像... 1 {「foo2」:{「foo3」:{「foo4」:「090909」,「bar4」:「1」}}} ...其中輸出[,2]是looooong字符串,而不是兩個 與鍵foo4 和bar4(「090909」,「1」)關聯的值的單獨變量。

    的RMongo驅動器包括嵌入hiearchy返回數據。

    可以重塑&使用RMongo dbAggregate()命令和操作者$project是MongoDB中的Aggregation Framework 2.2+的部分弄平的結果輸出。

    0

    如果您的最終目標是從R嵌套對象中提取某些類型的下游處理的值,那麼您將得到該值。它避免了必須構建聚合管道,並且是解決問題的簡單方法。不是直接深入嵌套結構並訪問bar4,而是提取對象的頂層,它將提供您引用的長字符串。

    output <- dbGetQueryForKeys(mongo, 'test_data', '{"foo": "bar"}', '{"foo1.foo2.foo3.foo4":1,"foo1":1}') 
    

    由於輸出是一個data.frame,你可以使用 'jsonlite' 庫讓您的數據:

    library(jsonlite) 
    foo1 <- fromJSON(output$foo1) 
    bar4 <- foo1$foo2$foo3$bar4 
    
    相關問題