如果我有两个集合,其中一个集合有 dbref,如何使用 $lookup 和 dbref 加入?
问问题
1148 次
1 回答
0
DBref 是一个 BSON 对象,您不能使用它的值进行查找。
但是,有一种方法可以将 DBRef 对象转换为数组。 几个月前我写了一个答案,描述了如何做到这一点。
简短说明
假设您有这样的 DBRef 对象:
myField: DBRef("otherCollection", ObjectId("582abcd85d2dfa67f44127e0")),
像这样在 myField 上使用 $objectToArray
db.myColl.aggregate([
{
$project: {
transformedDBRef: {$objectToArray: "$myField"},
}
},
])
结果将是一个包含两个对象的数组,一个对象用于引用,一个对象用于 DBRef 中包含的 ObjectId,每个对象都有一个字段“k”和一个字段“v”。它看起来像这样:
transformedDBRef: [{"k" : "$ref","v" : "otherCollection"},{"k" : "$id","v" : ObjectId("582abcd85d2dfa67f44127e0")}
然后,您可以 grep ObjectId。有关完整的解决方案,请查看上面的链接。
于 2018-04-10T13:57:33.227 回答