2013-08-25 28 views
0

我有两个属性b和你是数组。 我希望我的查询返回所有满足条件1的b中至少有1个元素的所有文档,或者满足条件2的u中至少有1个元素。Mongodb,我该如何聚合匹配/分组某些文档,但只有满足其中一个或其他条件才可以?

我的问题是,如果条件1满足,它会返回数组b,其中包含满足它的所有元素,以及来自u的所有元素。 同条件B.

我想:如果在满足条件1的b中有一个元素,则返回该数组中满足条件的元素。如果不是,则为空数组或排除b。与条件2和u相同。

如果没有元素满足条件,则排除文档。

回答

2

不幸的是,您无法在数据库服务器上单步执行MongoDB。你需要做到客户端。虽然您可以项目(documentation)的结果只包含/排除某些字段(或数组中的第一个匹配结果,例如here所示),但您无法基于多个数组进行搜索来有条件地执行此操作(并且投影算子只返回第一个匹配,而不仅仅是匹配的结果)。

您可能需要考虑不同的文档/收集结构以满足您的要求。 MongoDB目前还没有子文档级别的过滤/搜索功能。

+0

很害怕那个。我必须做大量的写入和读取操作。 ty有线 – Discipol

相关问题