The $setEquals aggregation operator允许比较两个列表是否相等。
假设我有一个这样的列表清单:
lol = [['a', 'b'], ['c']]
在我的数据库中还有这样的文档结构:
{
"_id": "8...",
"letters": [ 'b', 'a']
}
在聚合的匹配阶段,我想获取所有文档,其中
“字母”组等于lol
组中的任何。
在这种情况下,由于['b','a']的集合等于['a','b']的集合,因此将返回示例文档。
有人知道怎么做到吗?
感谢您的帮助!
答案 0 :(得分:0)
据我所知,没有单一的运算符。但是,您可以使用$or
来检查它们中的每一个并以编程方式建立该条件集,也可以将管道阶段添加到聚合中,以1为基础。将数组数组作为每个文档的字段添加, 2. $unwind
数组,最后3.与您的letters
字段比较单个展开的数组元素(即每个单独的集合)。
您选择采用哪种方法在很大程度上取决于您的内存限制。如果您的内存不错,我强烈建议您在其他管道阶段中选择第二个选项,否则您可能需要考虑将以编程方式构造的$or
操作填充到现有管道阶段中。