为了账号安全,请及时绑定邮箱和手机立即绑定

两个集合的 ObjectId 的简单 $lookup“左连接”在 Mongo DB 中不起作用

两个集合的 ObjectId 的简单 $lookup“左连接”在 Mongo DB 中不起作用

四季花海 2023-11-02 20:06:42
我将 Mongo DB Atlas 与 node.js 和 oboe 结合使用(oboe 将结果流式传输到 html)。我对这一切都很陌生,刚刚学习所有这些技术,所以用更简单的术语解释将不胜感激。目标是在两个集合之间进行 $lookup,在本例中是“review”到“place”的集合。我研究过类似的答案,但要么不起作用,要么使用字符串,而不是 ObjectId。这很简单,只需连接两个集合的 ObjectId,但在使用 oboe 时,我无法从“左连接”的“地点”集合中提取数据(请参阅底部的 oboe 代码,FWIW)。这是两个集合中的文档,然后是代码。我究竟做错了什么?我尝试将它们转换为字符串并与 .toString() 和 .str 连接,并为 localField 和foreignField 添加“place_id.ObjectId”和“_id.ObjectId”。另一件事是,我如何才能看到光标中的内容以了解我得到的内容?debug(cursor.ToArray()) 不起作用。提前致谢。review({  "_id": { "$oid": "5fd27fd9647f7bb815c4c946" },  "place_id": { "$oid": "5fbc37c4fc13ae680b00002b" }, // connect this...  "user_id": { "$oid": "5fbc10ecfc13ae232d000068" },  "title": "Black Forest -- unforgettable!",  "description": "The forest was great.",  "score": { "$numberInt": "5" }place{  "_id": { "$oid": "5fbc37c4fc13ae680b00002b" }, // connected to _id above  "name": "Black Forest (Schwarzwald)",  "category": "activity",  "city": "Freiburg",  "country": "Germany",  "description": "The Black Forest (German: Schwarzwald [ˈʃvaʁtsvalt] (About this soundlisten)) is a large forested mountain range.]",  "image": { "filename": "1607629020164_black_forest.jpg", "mime": "image/jpeg" },  "state": ""})router.get('/', async (req, res, next) => {  debug('get all reviews api');  try {    const q = req.query.q;    const collation = { locale: 'en_US', strength: 1 };    const matchStage = {};    if (q) {      matchStage.$text = { $search: q };    }    const pipeline = [      {        $match: matchStage,      },      {        $lookup: {          from: 'place',          localField: 'place_id',          foreignField: '_id',          as: 'place',        },      },    ];光标转到双簧管并成为“项目”。我希望使用模板字符串,例如{item.place.name}在将其放入 html 时获取数据。这就是我访问它的方式,对吗?
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

从 MongoDB 聚合查询中,您的place字段是一个数组。您可能需要$unwind它以将其展平为对象,以便您的双簧管代码访问它。



查看完整回答
反对 回复 2023-11-02
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信