我是MongoDB的新手,因此在mongo中进行连接查询时遇到问题请帮忙 我有两个收集"用户"和" user_login_details"
以前我有以下查询来从单个集合中获取记录
$data = $this->mongodb->select()->where(array('instituteId' => $instituteId))->where_not_in('type', array($instituteAdmin))->get('user');
现在我想从两个集合" user"中获取记录。具有单行,对于该行,在" user_login_details"中存在多个登录详细信息条目。集合。
我尝试使用聚合如下
db.user.aggregate([
{$match: { instituteId: '5954ee6dcf2169d50d51b88d'} },
{
$lookup:
{
from: "user_login_details",
localField: "_id",
foreignField: "user_id",
as: "user_login_details"
}
}
]).pretty()
但是根据我在php中的第一个查询还需要一个条件
->where_not_in('type', array($instituteAdmin))
如何在聚合查询中添加此内容。
此上面的查询将返回具有多个登录详细信息的数据,如下所示。
{
"_id" : ObjectId("5954ee6dcf2169d50d51b88e"),
"email" : "abc@gmail.com",
"instituteId": "5954ee6dcf2169d50d51b88d",
"type": "Institute Admin"
"user_name" : "SA-011",
"religion" : "",
"caste" : "",
"bloodGroup" : "",
"groups" : "",
"reset_password" : NumberLong(1),
"aws_arn" : "",
"user_login_details" : [
{
"_id" : ObjectId("5b069955df05aeda0f8b4568"),
"user_id" : ObjectId("5954ee6dcf2169d50d51b88e"),
"ip" : "::1",
"my_session_id" : "3199d6fd6ecfef1ec63bc1760115d116",
"login_time" : ISODate("2018-05-24T10:52:05Z"),
"logout_time" : ISODate("2018-05-24T11:04:47Z")
},
{
"_id" : ObjectId("5b069c52df05ae6e358b4567"),
"user_id" : ObjectId("5954ee6dcf2169d50d51b88e"),
"ip" : "::1",
"my_session_id" : "b2d33ea8bc7cc3bb8090fc1dd15f7371",
"login_time" : ISODate("2018-05-24T11:04:50Z"),
"logout_time" : ""
}
]
}
我只需要来自" user_login_details"的最新记录。集合。
请使用PHP创建查询帮助我使用" CodeIgniter MongoDB Active Record Library"。
提前致谢。