首页 > 解决方案 > MongoDB:如何不重复收集

问题描述

我的查询:

db.Customer.aggregate({$project:{"CustNum":1, "CustName":1, "_id":0}})

结果:

{ "CustNum" : 101, "CustName" : "Juan Dela Cruz" }
{ "CustNum" : 103, "CustName" : "Jose Nicholas" }
{ "CustNum" : 101, "CustName" : "Juan Dela Cruz" }
{ "CustNum" : 101, "CustName" : "Juan Dela Cruz" }
{ "CustNum" : 101, "CustName" : "Maria Makiling" }

我的问题:如您所见,我应该为 CustName 和 CustNum 提供 3 个名称。我的输出应该是这样的

{ "CustNum" : 101, "CustName" : "Juan Dela Cruz" }
{ "CustNum" : 103, "CustName" : "Jose Nicholas" }
{ "CustNum" : 101, "CustName" : "Maria Makiling" }

如何做到这一点?我尝试使用 distinct 但它只显示一个错误。

第一次尝试查询:

db.Customer.distinct().aggregate({$project:{"CustNum":1, "CustName":1, "_id":0}})

第二次尝试查询:

 db.Customer.distinct().aggregate({$project:{"CustNum":1, "CustName":1, "_id":0}})

标签: mongodbcollectionsaggregatedistinctproject

解决方案


你需要使用组,

db.collection.aggregate([
  {
    "$group": {
      "_id": "$CustName",
      "CustName": {
        "$first": "$CustName"
      },
      "CustNum": {
        "$first": "$CustNum"
      },
      
    }
  }
])

工作Mongo游乐场


推荐阅读