MongoDB查找并从$ or加入字段

时间:2018-08-24 10:11:05

标签: php mongodb php-mongodb

我有两个集合,第一个是friend_list,看起来像这样:

user_id: int
friend_id: int
status: string

第二个集合包含用户数据,如下所示:

user_id: int
username: string
etc.

我需要获取给定用户ID的所有朋友的用户数据。问题在于,该用户可以是friend_id或user_id,取决于谁发起了友谊。我提出了这样的请求:

[
    [
      '$match' => [
        'friend_id' => $userId,
        'status' => ['$in' => [FriendStatus::ACTIVE, FriendStatus::PENDING]]
      ]
    ],
    [
      '$lookup' => [
        'from' => 'user_data', 
        'localField' => 'user_id', 
        'foreignField' => 'user_id', 
        'as' => 'user_data'
      ]
    ]
  ]

但是我需要使用'friend_id' => $userId而不是'$or' => [['friend_id' => $userId], ['user_id' => $userId]]。但这不适用于'localField' => 'user_id'的查找。

我的想法是可以使用$group解决此问题,但我不知道如何解决。 有没有一种方法可以将$ group user_id / friend_id字段不等于目标user_id转换为其他字段,以后可以用于查找?

0 个答案:

没有答案