db.getCollection(...).find(...).aggregation不是一个函数。

问题描述 投票:0回答:1

(* MongoDB shell版本:2.6.12 *)

我有一个收藏 logs 和集合 users. logs 有一个领域 userId 代表发送日志的用户。users 有一个字段 _id.

我使用Robo 3T对远程服务器的数据进行查询。

现在,我对日志感兴趣的是,它的 url/subscribe而我想看到后面的那些用户信息。所以我写了下面的查询。

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

但我得到一个错误。

enter image description here

有谁知道如何解决这个问题?

编辑1: 我得到了一个新的错误。

enter image description here

mongodb mongoose robo3t
1个回答
0
投票

你不应该在查找之后使用聚合,而是直接使用聚合,并使用 匹配 操作员来查找文件,然后 $lookup

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

更新:要使用$lookup,你的MongoDB版本应该等于或大于3.2,因为这个操作符(join)在MongoDB的旧版本中无法使用。

© www.soinside.com 2019 - 2024. All rights reserved.