2014-10-30 60 views
3

我有一個couchbase服務器,我正在嘗試創建一些視圖,但似乎我沒有完全理解視圖概念。 我有以下兩種示例文檔:Couchbase中的視圖

{ 
    "id": 70, 
    "status": 2, 
    "updatedAt": "2014-09-04T08:52:29.969Z", 
    "createdAt": "2014-09-03T21:32:19.000Z", 
    "user1": { 
    "id": 33185, 
    .... 
    }, 
    "user2": { 
    "id": 40838, 
    ..... 
    } 
} 

{ 
    "id": 71, 
    "status": 4, 
    "updatedAt": "2014-09-03T21:33:09.404Z", 
    "createdAt": "2014-09-03T21:32:20.000Z", 
    "user1": { 
    "id": 37126, 
    .... 
    }, 
    "user2": { 
    "id": 36094, 
    ..... 
    } 
} 

當我創建與此映射功能的視圖:

function (doc, meta) { 
    if (doc.user1 && doc.user2) { 
    emit(doc.id, doc); 
    } 
} 

所述第一文件(ID:70)是不當第二個是時,由視圖返回。我不明白爲什麼即使它們都有user1和user2。

任何幫助非常感謝。

+2

如果您將開發設計文檔推廣爲產品,是否仍然會發生這種情況? – Kirk 2014-10-30 19:11:20

+0

坦克@Kirk我是Couchbase的新手,我不知道開發視圖只能在文檔的一個子集上工作,當我嘗試使用帶有所有預期文檔的完整子集的視圖時。 – Sami 2014-11-01 09:34:40

+0

你真的不想發佈文檔,這會讓你索引大量並且殺死性能。相反,視圖將始終返回文檔的密鑰,您可以使用該密鑰來使用普通的get方法獲取文檔。 – Paddy 2014-12-17 13:06:20

回答

4

您需要將文檔作爲開發工具提升爲生產設計文檔。開發設計文檔僅對一部分數據進行操作。

0

需要記住的一點是,開發視圖用於開發視圖本身,只能看到數據的一個子集。一旦擁有它,視圖就能以您想要的方式工作,您將視圖提升爲生產視圖,以便對整個數據集起作用。