我準備將CouchDB用於我的項目。但無法找到實現像SQL SELECT * FROM Employees WHERE LastName NOT IN (SELECT LastName FROM Managers)
這樣的視圖的方法。換句話說,我想從視圖A中獲得一個集合,但不是在視圖B中。問題:如何在CouchDB中實現未進入條件?CouchDB set-difference/not-in condition
0
A
回答
0
保持員工和經理列出不同的文檔集合正在使用關係結構,其中數據庫不是關係數據庫。如果出於某種原因,你被迫這樣做,你需要一些方法來區分文檔的格式(從哪個表格)。比方說,你與現場scheme
做:
{ _id: "EMPL_ID", scheme: "employee", ... }
{ _id: "MNGR_ID", scheme: "manager", employee: "EMPL_ID", ... }
然後你可以使用地圖:
function (doc) {
if (!doc.scheme) return;
if (doc.scheme != "manager") emit(doc.last_name, doc);
}
如果出於某種奇怪的原因,你不能做到這一點,你只具備參考員工文檔管理器文檔,你可以發出兩份文件:
function (doc) {
if (some_test_for_being_employee_scheme(doc))
emit([doc._id, 1], doc);
if (doc.emp_id)
emit([doc.emp_id, 0], null);
}
你將會得到一個鑰匙["employee_id", 1]
員工的列表,每個經理之前與RO w標記爲經理(密鑰[..., 0]
)。這將需要一些空間,但是使用列表功能可以輕鬆過濾管理人員,而客戶端只會從數據庫接收非管理員。
請記住,它只是沒有做出正確的數據庫設計的解決方法。
0
如果您更改模型以使其適合面向文檔的數據庫,這很容易。我通常在我的所有文件中都保留一個「類型」鍵,以保持不同類型的文件直接。如果您有一個單獨的「人員」類型,並用一個單獨的密鑰來裝飾所有也是「經理」的「人員」文檔,則只能爲非管理人員發出查看密鑰。如果您選擇使用單獨的「經理」類型,則可以類似地將發出的查看密鑰限制爲僅限非管理員。
0
我想答案很簡單:你不能混合查看結果。視圖是獨立的。 但是,有一種策略稱爲視圖排序規則可能會解決您的問題。我建議閱讀以下內容:http://wiki.apache.org/couchdb/View_collation 總結它:您需要使用不同的文檔類型,然後使用單個視圖來整理結果。
相關問題
- 1. sql [db2] select condition with condition
- 2. PHP {$ condition} && execute();
- 3. for loop condition issue
- 4. .net dropdownlist if condition
- 5. Javascript for for condition
- 6. multiple where condition codeigniter
- 7. 或condition in replaceAll
- 8. Multiple condition with.ReplaceAll
- 9. Switch case - else condition
- 10. jQuery Ajax Race Condition?
- 11. XSD if-else condition
- 12. if foreach and condition
- 13. Bash or condition in IF
- 14. CloudFormation,應用Condition DependsOn
- 15. ClojureScript,Figwheel,Devcards,Race Condition
- 16. MySql/SQL Orderby和Condition
- 17. While loop condition not reevaluating
- 18. React js if else condition
- 19. 爲什麼語句if(!condition){console.log(condition)}顯示爲真
- 20. while(condition){// work}`和`do {// work} while(condition)`有什麼好處?
- 21. 如何使if語句在if(condition&condition&if())中?
- 22. 當sum(condition)= sum(condition)和condition然後使用db2系統數據庫時的情況
- 23. if else condition with and operator
- 24. Yii2 has has many custom condition
- 25. Javascript short condition的含義
- 26. AngularJs ng-repeat multiple orderBy and condition
- 27. Case Condition中的條件
- 28. 如果textfield是myTextField {condition}
- 29. while(true)vs wait + condition同步
- 30. Modelica assert(condition,message,level = AssertionLevel.warning);
我認爲這是一個更好的解決方法。 –