我想根据另一个“源”集合的文档中的字段值,在“目标”集合的每个文档中设置新字段的值。
目的地文件……
你需要记住的一件事是 $查找 回报 zoneInfo 作为一个数组,所以为了使用你需要运行的那个字段 $开卷 在上面。然后,您可以使用简单地重塑您的文档 $ addFields 和 $项目 。尝试:
zoneInfo
db.names.aggregate([ { $lookup: { from: "phones", localField: "info.phone", foreignField: "phone", as: "phoneDetails" } }, { $unwind: "$phoneDetails" }, { $addFields: { "info.timezone": "$phoneDetails.timezone" } }, { $project: { phoneDetails: 0 } } ])
在最后一步中,您可以添加 $出 如果要更新现有集合。