$ set等于列表列表

时间:2018-08-25 12:00:23

标签: mongodb mongodb-query

The $setEquals aggregation operator允许比较两个列表是否相等。

假设我有一个这样的列表清单:

lol = [['a', 'b'], ['c']]

在我的数据库中还有这样的文档结构:

{
    "_id": "8...",
    "letters": [ 'b', 'a']
}

在聚合的匹配阶段,我想获取所有文档,其中 “字母”组等于lol组中的任何

在这种情况下,由于['b','a']的集合等于['a','b']的集合,因此将返回示例文档。

有人知道怎么做到吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

据我所知,没有单一的运算符。但是,您可以使用$or来检查它们中的每一个并以编程方式建立该条件集,也可以将管道阶段添加到聚合中,以1为基础。将数组数组作为每个文档的字段添加, 2. $unwind数组,最后3.与您的letters字段比较单个展开的数组元素(即每个单独的集合)。

您选择采用哪种方法在很大程度上取决于您的内存限制。如果您的内存不错,我强烈建议您在其他管道阶段中选择第二个选项,否则您可能需要考虑将以编程方式构造的$or操作填充到现有管道阶段中。