如何从MongoDB获得独特的价值?

时间:2020-02-14 11:22:18

标签: mongodb mongodb-query aggregation-framework

我是MongoDB的新手,因此很难从那里获得独特的价值。

这是集合中的文档,我要按“ CustomerAccountNo” 进行区分(这是重复值= 165)

   {
        "_id": "5e3eaf3ef5aab73568bd8494",
        "CustomerAccountNo": "123",
        "Customer": "Lucy Thom"
    },
    {
        "_id": "5e3eaf40f5aab73568bd8495",
        "CustomerAccountNo": "325",
        "Customer": "Nick Granger"
    },
    {
        "_id": "5e3eaf42f5aab73568bd8496",
        "CustomerAccountNo": "658",
        "Customer": "Tommy Tee"
    },
    {
        "_id": "5e3eaf44f5aab73568bd8497",
        "CustomerAccountNo": "6513",
        "Customer": "Carlos Nolasco"
    },
    {
        "_id": "5e3eaf49f5aab73568bd8498",
        "CustomerAccountNo": "165",
        "Customer": "Hungarian Pastry shop"
    },
    {
        "_id": "5e4660e9f57ea925a42b4ba2",
        "CustomerAccountNo": "165",
        "Customer": "Hungarian Pastry shop"
    }

并希望输出如下:

    {
        "_id": "5e3eaf3ef5aab73568bd8494",
        "CustomerAccountNo": "123",
        "Customer": "Lucy Thom"
    },
    {
        "_id": "5e3eaf40f5aab73568bd8495",
        "CustomerAccountNo": "325",
        "Customer": "Nick Granger"
    },
    {
        "_id": "5e3eaf42f5aab73568bd8496",
        "CustomerAccountNo": "658",
        "Customer": "Tommy Tee"
    },
    {
        "_id": "5e3eaf44f5aab73568bd8497",
        "CustomerAccountNo": "6513",
        "Customer": "Carlos Nolasco"
    },
    {
        "_id": "5e3eaf49f5aab73568bd8498",
        "CustomerAccountNo": "165",
        "Customer": "Hungarian Pastry shop"
    }

我正在尝试下面的代码来获得上述响应,

collectionName.distinct("CustomerAccountNo") 

collectionName.aggregate([
  { $group: { _id: { CustomerAccountNo: "$CustomerAccountNo", Customer: "$Customer" } } }
]);

但是上面的两个代码都没有按我的意愿正确归档响应,而且我不知道自己在做什么错。

1 个答案:

答案 0 :(得分:3)

此聚合将获得所需的结果:

db.test.aggregate( [
  { $group: { _id: "$CustomerAccountNo", doc: { $first: "$$ROOT" } } },
  { $replaceRoot: { newRoot: "$doc" } }
] ).pretty()