假设我有两个名为CollectionA和CollectionB的集合,这两个集合具有不同的字段。CollectionA将具有多个具有相同字段的文档,CollectionB仅包含一个文档
范例
CollectionA
{
"UniqeId" :1,
"Hobbies" : "Eating"
},
{
"UniqeId" :2,
"Hobbies" : "Sleeping"
},
{
"UniqeId" :3,
"Hobbies" : "Walking"
}
CollectionB
{
"UserName" :"Sukuna",
"UserType" : "Villan"
}
我想要这样的输出
{
"UniqeId" :1,
"Hobbies" : "Eating",
"UserName" :"Sukuna",
"UserType" : "Villan"
}
假设CollectionA中的所有文档都包含相同的字段,您可以看到两个集合之间没有唯一字段,并且您可以看到我们需要在CollectionA中应用筛选器,即)UniqeId=1
我使用的是C#,我可以执行两个DB请求来获取这些集合详细信息(* 一个请求用于CollectionA输出,另一个请求用于CollectionB输出 *),并设法在API级别组合这两个请求以获取所需的输出,但我希望在DB级别执行。
我不希望两个DB调用,这会影响API性能,因此是否可以通过单个DB调用或使用任何聚合管道来实现这一点?
2条答案
按热度按时间eanckbw91#
使用localField 1和foreignField 1进行查找
mongoplayground
fbcarpbf2#
最后,在经历了大量的尝试和错误,并尝试使用管道之后,我可以在聚合管道中做到这一点,我使用了unionWith和group。