【问题标题】:How To Query Unique Users With Mongoose如何使用 Mongoose 查询唯一用户
【发布时间】:2021-09-15 02:29:27
【问题描述】:

上下文
在 MongoDB 数据库中,我有一个包含邮件文档的集合。每个文档都有接收者和发送者字段。

目标
我想查询每个发件人的一封邮件。换句话说,我不希望来自同一发件人的两封或多封邮件。

示例
我有三个文件:

{
    _id: 1,
    sender: John,
    receiver: Kate
}

{
    _id: 2,
    sender: John,
    receiver: Kate
}

{
    _id: 3,
    sender: Mike,
    receiver: Kate
}

查询后,我应该得到:(不包括约翰的第二封邮件)

{
    _id: 1,
    sender: John,
    receiver: Kate
}

{
    _id: 3,
    sender: Mike,
    receiver: Kate
}

请帮忙!谢谢。

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    使用此聚合,按发送者分组并将接收者推送到数组,然后将接收者作为数组的第一个元素

    db.collection.aggregate([
      {
        $group: {
          _id: {
            "sender": "$sender"
          },
          r: {
            "$push": "$$ROOT"
          }
        }
      },
      {
        "$project": {
          sender: "$_id.sender",
          receiver: {
            $first: "$r.receiver"
          },
          description: {
            $first: "$r.description"
          },
          _id: 0
        }
      }
    ])
    

    https://mongoplayground.net/p/mwDdL4aLneu

    【讨论】:

    • 感谢您的回答,但我只想过滤文档而不是修改它们。我在操场上看到的是文档中只剩下发送者和接收者字段。我希望整个文档保持原样。
    猜你喜欢
    • 2016-01-22
    • 2019-03-06
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2016-01-02
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多