我准备将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);
我认为这是一个更好的解决方法。 –