【问题标题】:How to take unique values from mongodb aggregate pipeline如何从 mongodb 聚合管道中获取唯一值
【发布时间】:2018-05-21 12:10:14
【问题描述】:

我当前的mongodb聚合管道输出是

[
    {
        "CustomerID":"E001",
        "CustomerName":"Suresh",
        "CustomerPhone":"919889902----",        
    },
    {
        "CustomerID":"E001",
        "CustomerName":"Suresh",
        "CustomerPhone":"919889902----",        
    },
    {
        "CustomerID":"E002",
        "CustomerName":"Ramesh",
        "CustomerPhone":"919889902----",        
    },
    {
        "CustomerID":"E003",
        "CustomerName":"Kishore",
        "CustomerPhone":"919889902----",        
    },
    {
        "CustomerID":"E002",
        "CustomerName":"Ramesh",
        "CustomerPhone":"919889902----",        
    },
    {
        "CustomerID":"E001",
        "CustomerName":"Suresh",
        "CustomerPhone":"919889902----",        
    }
];

根据CustomerID

,实际响应应该是唯一的
[
    {
        "CustomerID":"E001",
        "CustomerName":"Suresh",
        "CustomerPhone":"919889902----",        
    },
    {
        "CustomerID":"E002",
        "CustomerName":"Ramesh",
        "CustomerPhone":"919889902----",        
    },
    {
        "CustomerID":"E003",
        "CustomerName":"Kishore",
        "CustomerPhone":"919889902----",        
    }
];

我不知道使用什么运算符从聚合管道中获取唯一值。

我使用 $project, $sort 来投影响应,使用 $skip 和 $limit 来进行分页

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    按你想要的值分组:

    db.collection.aggregate([
       {
         $group:{
           _id: "$CustomerID",
           CustomerId: {$first:"$CustomerID"},
           CustomerName: {$first: "$CustomerName"},
           CustomerPhone: {$first: "$CustomerPhone"}
        }
      }
    ]);
    

    我假设同一客户 ID 的姓名和电话相同,否则将 $first 替换为 $addToSet 以获取所有姓名和电话

    猜你喜欢
    • 2022-01-18
    • 2019-12-29
    • 1970-01-01
    • 2017-05-27
    • 2023-03-21
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多