检查聚合mongo / mongoose中的跟随状态

时间:2018-02-28 13:40:13

标签: mongodb mongoose aggregation-framework

我有这个架构的用户,其中followers / follow是数组,引用是相同的架构

  var userSchema = new Schema({
  username: { type: String, unique: true, trim: true, required: true },
  password: { type: String, required: true },
  followers: [{ type: Schema.Types.ObjectId, ref: "users" }],
  followed: [{ type: Schema.Types.ObjectId, ref: "users" }],
  registered: { type: Date, default: Date.now },
  admin: { type: Number, default: 0 }
});

我要找的是返回跟随状态,如果_id包含在follow数组中,请举例说明follow_status:1

[
      {
        $match: { username: new RegExp(username, "i") }
      },
      {
        $unwind: "$followers"
      },
      {
        $lookup: {
          from: "users",
          localField: "followers",
          foreignField: "_id",
          as: "info"
        }
      },
      {
        $unwind: "$info"
      },
      {
        $project: {
          info: {
            _id: 1,
            username: 1,
            avatar: { $ifNull: ["$avatar", ""] },
            fullname: { $ifNull: ["$fullname", ""] }
          }
        }
      },
      {
        $replaceRoot: { newRoot: "$info" }
      },
      {
        $limit: 1000
      }
    ]

当前的管道结果

[
    {
        "_id": "5a906653f52e66c9c7a23cb6",
        "username": "User1"
    },
    {
        "_id": "5a908eb564a726cf8ec7e0a3",
        "username": "User2"
    }
]

0 个答案:

没有答案