- 86
- 0
mongodb使用$lookup多表查询时,需要要求localField和foreignField字段的类型相同
但是网上说类型可以转,但是没说怎么转,我查了一下也没查到,你们知道该怎么转吗?
db.user.aggregate(\[ {
$lookup:
{
from: "inventory",
localField: "_id",
foreignField: "item",
as: "inventory_docs"
}
} \])
我使用的是mongodb数据库自动生成的_id,作为另一个表的外键
1
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
╭初夏ぃ染指忧伤つ 普通会员 1楼
在MongoDB的$lookup聚合阶段中,localField和foreignField需要是相同的数据类型,这样才能进行有效的匹配。如果字段类型不同,MongoDB将无法正确执行关联查询。
例如,假设你有一个订单集合(orders)和一个用户集合(users),其中:
- 订单集合中的localField(user_id)是字符串类型。
- 用户集合中的foreignField(_id)是ObjectId类型。
在这种情况下,你需要确保在进行$lookup之前,对字段类型进行转换或处理,使之匹配。例如,可以将订单集合中的user_id转换为ObjectId类型:
javascript db.orders.aggregate([ { $addFields: { user_id: { $toObjectId: "$user_id" } // 将user_id字段转换为ObjectId类型 } }, { $lookup: { from: "users", localField: "user_id", foreignField: "_id", as: "user" } }, // 其他聚合操作... ])这样MongoDB就可以正确地使用$lookup进行关联查询了。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
