Как получить отличные значения от MongoDB? - PullRequest
1 голос
/ 14 февраля 2020

Я новичок в 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 Ответ

3 голосов
/ 14 февраля 2020

Эта агрегация получит требуемый результат:

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