我目前正在使用 golang 创建一个聚合管道,在该管道中我使用“$or”运算符查询文档。
结果是一堆未分组的文档,我需要对它们进行分组,以便我可以进入下一个阶段,找到两个数据集之间的交集。然后用于在单独的集合中进行查找
{
"$match": bson.M{
"userID": bson.M{"$lt": afterID},
"$or": []bson.M{
// "follower": myID,
{"follower": myID},
{"follower": personID},
},
},
},
{
"$group": bson.M{
"_id": "$follower",
"followers": bson.M{"$push": "$userID"},
},
},
{
"$project": bson.M{
"common": bson.M{"$setIntersection": []interface{}{string("$" + myID.Hex() + ".followers"), string("$" + personID.Hex() + ".followers")}},
},
},
}
问题是,在“项目”阶段,我需要以某种方式引用 ID,尽管在进行查询之前就知道这些 ID,但不能用它们的字符串表示形式替换它们。
我知道这一点,因为尽管具有共同的值,但该值始终解析为 null。
我怎样才能实现这一点,或者甚至以一种简单的方式对我的查询进行建模,而无需对查询进行分块并手动查找交集?
一只斗牛犬
相关分类