如何在mongodb中获取基于两个集合的数据?

如何在mongodb中获取基于两个集合的数据?,mongodb,go,mongodb-query,Mongodb,Go,Mongodb Query,假设有两个集合,User和UserHistroy。我只需要在UserHistroy集合中找到具有特定值的用户集。(如使用量超过18次的用户) User=>{id:123,“名称”:“X”,“类型”:“常规”},{id:456,“名称”:“Y”,“类型”:“常规”} UserHistory=>{“id”:123,“用法”:36,“余额”:11,“月份”:“九月”},{“id”:123,“用法”:20,“余额”:12,“月份”:“十月”},{“id”:123,“用法”:30,“余额”:32,“月份”

假设有两个集合,User和UserHistroy。我只需要在UserHistroy集合中找到具有特定值的用户集。(如使用量超过18次的用户)

User=>{id:123,“名称”:“X”,“类型”:“常规”},{id:456,“名称”:“Y”,“类型”:“常规”}

UserHistory=>{“id”:123,“用法”:36,“余额”:11,“月份”:“九月”},{“id”:123,“用法”:20,“余额”:12,“月份”:“十月”},{“id”:123,“用法”:30,“余额”:32,“月份”:“十一月”}


我只需要使用Golang和MongoDB准备聚合函数。

添加条件

你需要

大概是这样的:

db.User.aggregate([
{
“$match”:{
“id”:123
}
},
{
$lookup:{
来自:“用户历史记录”,
localField:“id”,
外域:“id”,
as:“历史”
}
},
{
“$addFields”:{
“历史”:{
“$filter”:{
“输入”:“$history”,
“as”:“h”,
“条件”:{
“$gte”:[
“$$h.usage”,
18
]
}
}
}
}
}
])
检查这个

此外,我还添加了一个阶段,
$match
,以获得给定
id
的结果。您可以使用此选项筛选或删除所有文档,使其加入到
User
集合中


$lookup
之后,我使用
$addFields
仅使用值大于18的对象更新字段。

是的,但我关心的是,如何在该查找中检查使用18的条件。哦,这是真的,对不起。给我几分钟,我会更新答案。非常感谢你,欢迎你!另外,如果您的问题是解决者,请将答案标记为已接受(请注意:)