0

我有两个属性 b 和 u 是数组。我希望我的查询返回所有在 b 中至少有 1 个满足条件 1 的元素或在 u 中至少有 1 个满足条件 2 的元素的所有文档。

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

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

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

4

1 回答 1

2

不幸的是,您不能在数据库服务器上一步用 MongoDB 做到这一点。您需要在客户端进行操作。

虽然您可以将结果投影(文档)以仅包含/排除某些字段(或数组中的第一个匹配结果,例如,如此处所示,但您不能有条件地基于对多个数组的搜索(以及投影运算符仅返回第一个匹配项,而不仅仅是匹配的结果)。

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

于 2013-08-25T15:02:45.530 回答