嵌套localfield的条件查找

时间:2019-07-19 20:28:37

标签: mongodb

我想获取用户的朋友和他们的信息。但只想加入“状态”等于2的用户。

这是我的对象

{
    "user_id" : ObjectId("5d2f574b1c27807fd7eb133d"),
    "relationship" : [ 
        {
            "user_id" : ObjectId("5d2f57661c27807fd7eb133e"),
            "status" : 2
        }, 
        {
            "user_id" : ObjectId("5d2f57c01c27807fd7eb133f"),
            "status" : 1
        }
    ]
}

我的查询

db.getCollection('relationships').aggregate([
  {$match: {
      user_id: ObjectId("5d2f574b1c27807fd7eb133d")}
  },
  { $lookup: {
    from: "users",
    as: "users",
    let: { id: "$_id" },
    pipeline: [
      { $match: {
          $expr: { $and: [
              { $eq: [ "$relationship.user_id", "$$id" ] },
              { $eq: [ "$relationship.status", 2 ] }
          ] }
      } }
    ],
  } }
])

预期产量

{
    "user_id" : ObjectId("5d2f574b1c27807fd7eb133d"),
    "friends" : [ 
        {
            "_id" : ObjectId("5d2f57661c27807fd7eb133e"),
            "name" : "Mike"
        }
    ]
}

执行此操作的正确方法是什么?

0 个答案:

没有答案