【发布时间】:2020-07-06 17:18:29
【问题描述】:
我有一个集合,其中一个字段是整数列表:
myDocument1:{
_id: 1,
bits: [0,1,2,9,11,12,19]
},
myDocument2:{
_id: 2,
bits: [0,1,3,6,11,12,16]
}
另一方面,我有一个整数查询列表,我想检查与此集合中文档的每个位列表的交集的大小。在原生 MongoDB 查询语言中,我进行如下操作:
query: [2,9,11];
{'$project': {
'intersectionSize': {'$let': {
'vars': {'common': {'$size': {'$setIntersection': ['$bits', query ]}}},
}},
'_id': 1,
}}
...我添加到我的聚合管道后(我可以按需添加)。
根据 spring-data 文档,我一直在尝试将 ProjectOperator 与 SetIntersection 一起使用:
List<Integer> list = [2,9,11];
ProjectionOperation po = project().and(SetOperators.SetIntersection.arrayAsSet("bits")
.intersects(query).size().as("intersectionSize");
...但是“相交”不接受任何类型的数组或列表。
如何使用 MongoTemplate 和 Spring-Data 对我的集合中的数组和查询数组之间的交集及其大小进行编码?
【问题讨论】:
标签: aggregation-framework spring-data-mongodb mongotemplate