gpt4 book ai didi

node.js - MongoDB:按两个具有不同值的字段重新分组

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:11 24 4
gpt4 key购买 nike

我在 Typescript 中创建了一个 Nodejs 应用程序。我想按两个字段“one_id”和“two_id”以及指定的 one_id 值对文档进行分组。

这是我收集的数据:

{  
"_id":"5a8b2953007a1922f00124fd",
"one_id":"307973260186877954",
"two_id":"415228402765660181"
}
{
"_id":"5a8b29a3007a1922f00124fe",
"one_id":"415228402765660181",
"two_id":"307973260186877954"
}
{
"_id":"5a8c119bf6ba49302c3ef67e",
"one_id":"394199132195127306",
"two_id":"270131587092316161"
}
{
"_id":"5a8c11a4f6ba49302c3ef67f",
"one_id":"270131587092316161",
"two_id":"394199132195127306"
}
{
"_id":"5a8c33132a182308a836bc1c",
"one_id":"307973260186877954",
"two_id":"397036401075552256"
}
{
"_id":"5a8c33242a182308a836bc1d",
"one_id":"397036401075552256",
"two_id":"307973260186877954"
}

如果我想与 one_id="307973260186877954"配对,异常(exception)的结果将是:(必须有另一个包含“反向”字段内容的文档)

{  
"_id":"5a8b2953007a1922f00124fd",
"one_id":"307973260186877954",
"two_id":"415228402765660181"
}
{
"_id":"5a8b29a3007a1922f00124fe",
"one_id":"415228402765660181",
"two_id":"307973260186877954"
}
{
"_id":"5a8c33132a182308a836bc1c",
"one_id":"307973260186877954",
"two_id":"397036401075552256"
}
{
"_id":"5a8c33242a182308a836bc1d",
"one_id":"397036401075552256",
"two_id":"307973260186877954"
}

不知道你是否明白我的意思。

谢谢你,希望有人能理解我!

最佳答案

您可以使用 $lookup 自连接行并在匹配时输出文档,并使用排除的 $project 删除连接的字段。

db.col.aggregate([
{"$lookup":{
"from":col,
"localField":"one_id",
"foreignField":"two_id",
"as":"onetwo"
}},
{"$lookup":{
"from":col,
"localField":"two_id",
"foreignField":"one_id",
"as":"twoone"
}},
{"$match":{"onetwo.0":{"$exists":true}, "twoone.0":{"$exists":true}}},
{"$project":{"onetwo":0,"twoone":0}}
])

关于node.js - MongoDB:按两个具有不同值的字段重新分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com