(* 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"
}
})
但我得到一个错误。
有谁知道如何解决这个问题?
编辑1: 我得到了一个新的错误。
你不应该在查找之后使用聚合,而是直接使用聚合,并使用 匹配 操作员来查找文件,然后 $lookup
db.getCollection('logs').aggregate([
{
$match:{"url" : "/subscribe"}
},
{
$lookup:{
from:"users",
localField:"userId",
foreignField:"_id",
as:"logs_users"
}
}
])
更新:要使用$lookup,你的MongoDB版本应该等于或大于3.2,因为这个操作符(join)在MongoDB的旧版本中无法使用。