mongo 筛选 group 中 addToSet的值
时间: 2024-01-28 16:04:18 浏览: 27
在MongoDB中,您可以使用$group操作符对集合进行聚合操作,并使用$addToSet操作符将符合条件的值添加到数组中。如果您希望在聚合操作后筛选$addToSet操作符添加到数组中的值,可以使用$setIntersection和$setUnion操作符。
$setIntersection操作符可以用于查找两个数组的交集,而$setUnion操作符可以用于查找两个数组的并集。通过将这些操作符与$project操作符一起使用,您可以在聚合操作后筛选$addToSet操作符添加到数组中的值。
以下是一个示例,返回用户集合中所有年龄大于18岁的用户的爱好,并且从所有用户的爱好中筛选出那些只有年龄大于18岁的用户才有的爱好:
```
db.users.aggregate([
{ $match: { age: { $gt: 18 } } },
{ $group: { _id: "$_id", hobbies: { $addToSet: "$hobby" } } },
{ $project: { uniqueHobbies: { $setIntersection: ["$hobbies", [ "reading", "running", "swimming" ]] } } }
])
```
在上面的示例中,$match操作符筛选出年龄大于18岁的用户,$group操作符按用户ID将用户分组,并将他们的爱好添加到数组中。$project操作符使用$setIntersection操作符将所有用户的爱好与包含“reading”,“running”和“swimming”的数组进行比较,并返回只有年龄大于18岁的用户才有的爱好。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)