mongodb db.getCollection(...).find(...).aggregate不是函数

6yoyoihd  于 2022-11-28  发布在  Go
关注(0)|答案(1)|浏览(199)

(* MongoDB shell 版本:第2.6.12节 *)
我有一个集合logs和一个集合userslogs有一个字段userId,表示发送日志的用户。users有一个字段_id
我使用Robo 3T对远程服务器上的数据进行查询。
现在,我对url/subscribe的日志感兴趣,我想查看后面的用户信息。

db.getCollection('logs').find({ "url" : "/subscribe" }).aggregate({
    $lookup:{
        from:"users",
        localField:"userId",
        foreignField:"_id",
        as:"logs_users"
    }
})

但我得到一个错误:

有人知道怎么解决这个问题吗?

**编辑1:**出现新错误:

yvfmudvl

yvfmudvl1#

您不应该在查找后使用聚合,而是直接使用聚合并使用**$match运算符查找文档,然后$lookup**

db.getCollection('logs').aggregate([
   {
       $match:{"url" : "/subscribe"}
   },
   {
       $lookup:{
        from:"users",
        localField:"userId",
        foreignField:"_id",
        as:"logs_users"
       }
   }
])

更新:要使用$lookup,您的MongoDB版本应该等于或高于3.2,因为此操作符(joins)在旧版本的MongoDB中不起作用

相关问题