查找管道内的 ObjectId 匹配无法正常工作

Posted

技术标签:

【中文标题】查找管道内的 ObjectId 匹配无法正常工作【英文标题】:ObjectId match inside lookup pipeline doesn't work in normal way 【发布时间】:2020-02-09 01:08:20 【问题描述】:

问题部分是管道内的 $match: contentId: "$$content_id" 。它返回一个空数组。但是当我像下面这样改变它时,它工作正常。这是我的聚合管道的阶段对象。第一个有什么问题?当让变量是objectId时,简单匹配被设计为不适用于查找管道?感谢您的时间。

const contentReactionLookUp = (user_id) =>   
    return 
        $lookup: 
            from: "contentreactions",
            let:  content_id: "$_id" ,
            pipeline: [
                 $match:
                      $expr:


                                      $eq: [ "$contentId", "$$content_id" ] ,


                     
                ,
                // $match:  contentId: "$$content_id" , it doenst' work! 
            ],
            as: "userReaction"
        ,
    

【问题讨论】:

【参考方案1】:

https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions我在这里找到了我的解决方案。如果传递的值为字段路径,mongo聚合简单匹配不起作用。

【讨论】:

以上是关于查找管道内的 ObjectId 匹配无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

错误信息查找管道必须是字符串,是数组类型

Mongodb - 解决 ( aggregate聚合管道 ) $match 根据 id 匹配 返回 [ ] 的问题

带有 SkLearn 管道的 GridSearch 无法正常工作

嵌套在 ngIf 中时,异步管道订阅无法正常工作

角度日期管道在文本框中无法正常工作

GitLab Runner CI 管道内的 SSH 连接无法验证主机密钥