我们正在尝试将_id对象与不起作用的mId foreignfield匹配。 寻找mondodb文档。他们对此没有任何意义。是否可以使用mongodb查询?
_id作为文档中的对象
"_id" : ObjectId("56ab6663d69d2d1100c074db"),
mId as document in document
"mId" : "56ab6663d69d2d1100c074db",
查询如下:
collection.aggregate([
{
$lookup:
{
from: "category",
localField: "_id",
foreignField: "mId",
as: "categories"
}
}
])
UDPATE
作为总结,mongodb不支持$ lookup中的类型强制。所以要在上面工作,我必须将_id和mId作为 ObjectId 键入文档本身才能使其正常工作。
答案 0 :(得分:0)
你可以用mid加入id。虽然$ lookup不支持强制,但使用$ project管道阶段并首先将所有mid转换为Object Id,然后尝试$ lookup
答案 1 :(得分:0)
从Mongodb 4.0开始,您可以使用$toString聚合运算符将ObjectId转换为字符串。
Jira问题:Allow $lookup between ObjectId (_id.str) and string
现在您的查询应如下所示:
collection.aggregate([
{
$addFields: { "_id": { "$toString": "$_id" } }
},
{
$lookup: {
from: "category",
localField: "_id",
foreignField: "mId",
as: "categories"
}
}
])