簡體   English   中英

CouchDB文檔地圖修改

[英]CouchDB Document Map Modification

我是CouchDd的新手,所以我可能錯過了文檔中的內容。

我想創建一個將刪除doc成員的map函數。 注意:我不想實際更改存儲的文檔只返回結果。

我創建了這張地圖。

function(doc) {
    for(i = 0; i < doc.Videos.length; i++)
    {
        delete doc.Videos[i].VideoFrames;
    }
    emit(doc.DeviceId, doc);
}
  • doc.Videos是一個數組
  • 視頻的每個元素都有一個memember VideoFrames。

我想從CouchDb返回的文檔中刪除VideoFrames。

當我運行此地圖時,VideoFrame仍然在返回的文檔中。 我在JSFiddle中使用示例數據運行此映射,它可以正常工作,但是,在couchDB中它不是。

示例文檔

{
   "_id": "2e06de647c59fc94524c2f90b7001157",
   "_rev": "1-cb05705a122918c2c53dfb1e01ebed02",
   "TimeStamp": 1397343510,
   "DeviceId": "74a5f7aa9d4dfd0d",
   "Videos": [
       {
           "TimeStamp": 1397343518798,
           "VideoFrames": [
               {
                   "TimeStamp": 1397343519515,
                   "JPEG_Base64Frame": "iVBORw0KGgoAAAANSUh...==\n"
               }
           ]
       }
   ],
   "GeoLocations": [
       {
           "TimeStamp": 1397343512,
           "Latitude": 41.5654724,
           "Longitude": -87.5268132
       }
   ]
}

CouchDB密封doc對象,因為它已經被傳遞,因為在視圖索引更新時考慮了同一設計文檔中的所有map函數。 如果要修改它並發出結果,則應首先創建其副本並修改該副本而不是原始doc對象。

編輯

我誤解了這個問題。 似乎op只想從最終結果中刪除視頻幀。 這是你如何做到這一點

  function(doc) {
    var newDoc = doc;
    for(i = 0; i < newDoc.Videos.length; i++)
    {
        delete newDoc.Videos[i].VideoFrames;
    }
    emit(doc.DeviceId, newDoc);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM