【发布时间】:2016-07-04 19:14:33
【问题描述】:
我们正在尝试将 _id 对象与无效的 mId 外域匹配。 寻找 mondodb 文档。他们对此一无所知。是否可以使用 mongodb 查询?
_id 作为文档中的对象
"_id" : ObjectId("56ab6663d69d2d1100c074db"),
mId 作为文档中的字符串
"mId" : "56ab6663d69d2d1100c074db",
查询如下:
collection.aggregate([
{
$lookup:
{
from: "category",
localField: "_id",
foreignField: "mId",
as: "categories"
}
}
])
UDPATE
总而言之,mongodb 不支持 $lookup 中的类型强制。所以需要上面的工作我必须有 _id 和 mId 作为 ObjectId 输入文档本身才能使其工作。
【问题讨论】:
-
什么是
mId?如果它也是ObjectId,它应该可以正常工作。 -
目前不是 ObjectId。所以我们需要将外键设置为 ObjectId 本身来完成这项工作?
-
不需要。
$lookup运算符的工作时间与localField === foreignField一样长。注意strict等于。 -
我假设您想使用该聚合来模拟 JOIN。请注意,此聚合会遍历您的所有文档,并对每个文档的其他集合进行查询。虽然这可能只适用于几百到几千个文档,但当您的集合变得更大时,您将等待几分钟。
-
@BatScream 没有找到你。所以你的意思是 _id 和 mId 只有当它们是 ObjectId 类型时才应该匹配?
标签: mongodb