我对CouchDB相对较新(如果需要的话,更具体地说是Cloudant),而且我很难把头放在某些东西上。
假设以下(简化的)文档示例:
{ "docType": "school", "_id": "school1", "state": "CA" }
{ "docType": "teacher", "_id": "teacher1", "age": "40", "school": "school1" }
我想找到州$ state(例如CA)中所有年龄在$年龄(例如40岁)的老师。
答案 0 :(得分:1)
视图一次只考虑一个文档;那就是查询不能直接合并来自不同文档的数据。您可以使用Cloudant Query跨同一文档中的多个字段进行查询。您可以直接在Cloudant仪表板中编写选择器。像
"selector": {
"age": {
"$gte": 40
},
"state": {
"$eq": "CA"
}
}
请参见https://cloud.ibm.com/docs/services/Cloudant/tutorials?topic=cloudant-creating-an-ibm-cloudant-query
此处有完整参考文献:https://cloud.ibm.com/docs/services/Cloudant/tutorials?topic=cloudant-query
您还可以使用所谓的链接文档来模拟基本联接,如CouchDB文档https://docs.couchdb.org/en/stable/ddocs/views/joins.html
所述答案 1 :(得分:-1)
我还是Cloudant和NoSQL的新手,以前只使用关系数据库。据我了解,NoSQL中的文档等效于关系数据库中的行(但列可以不同)。我认为在您的示例中,您将文档视为表一样。
NoSQL数据库就像带有一个表的关系数据库。如果要交叉引用数据,则NoSQL数据库不是一个不错的选择。您可以将学校信息放入教师文档中,这将创建大量重复数据。如果要标准化的数据,最好使用关系数据库。
我是这个主题的新手,如果发现错误或没有帮助,请随时编辑或删除我的帖子。