Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchbase “查询”;不在「;卧铺_Couchbase_Couchbase View - Fatal编程技术网

Couchbase “查询”;不在「;卧铺

Couchbase “查询”;不在「;卧铺,couchbase,couchbase-view,Couchbase,Couchbase View,我在Couchbase中有一组文档,每个文档都可能有一些用户作为编辑器——数组中有一组UserID 我想查询具有特定用户Id(用户名)的用户在编辑器列表中不是的所有文档 以下是我的数据: document1: {editors[1,2,3,4]} document2: {editors[1,2,3,4,5]} user{id:5} 关于上述数据-我如何查询id=5的用户未在编辑器数组中列出的document类型的所有文档-这意味着只有document1应该返回?我想不出一种方法来使用Couc

我在Couchbase中有一组文档,每个文档都可能有一些用户作为编辑器——数组中有一组UserID

我想查询具有特定用户Id(用户名)的用户在编辑器列表中不是的所有文档

以下是我的数据:

document1: {editors[1,2,3,4]}
document2: {editors[1,2,3,4,5]}

user{id:5}

关于上述数据-我如何查询id=5的用户未在编辑器数组中列出的document类型的所有文档-这意味着只有document1应该返回?

我想不出一种方法来使用Couchbase视图,因为据我所知,文档和用户之间存在多对多关系,您需要执行“不在”查询。 您可以轻松地使用Couchbase的新查询语言。它目前正在开发人员预览中-这对您是否是一个有用的解决方案取决于您需要该代码多久才能投入生产。如果你现在就需要它,那么它可能不是最好的解决方案。
另一种方法是使用Couchbase的功能,在ElasticSearch中进行查询,然后从Couchbase中检索相关文档。这也解决了这项任务,因为现在就可以投入生产了。

另外一种选择是在客户端执行此操作。您可以在视图中检索所有文档及其编辑器,并在列表中迭代,然后通过循环丢弃编辑器列表中存在用户_id 5的任何文档。如果您不希望有许多行符合“notin”子句的条件,那么这样做就不会浪费太多的周期。 这对于N1QL来说是微不足道的。您可以快速设置并尝试。开发者预览已经可用,我们目前正在努力在产品的下一个主要版本中发布。 谢谢
-cihan

好的,我有一个适合我需求的解决方案。我在页面中添加了分页功能,这有助于避免浪费太多资源

基本上,我每个周期返回100个(取决于页面大小)类型为“document”的文档。在每个循环中,我都会浏览行列表,只选择那些登录用户未分配到的行。如果一个页面有100行,我将返回,否则我将继续另一个循环(页面大小),并尝试为视图添加要返回的缺失行

这很难看,但我看不到任何没有疑问的简单易行的解决方案

另一件事被Telerik发现了——LINQ去Couchbase