MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Включете полета в агрегата на mongodb

Не включва полето, защото не сте поискали полето да се върне. Нещото, което пропускате тук, е използването на $first или подобен "акумулатор" за да върнете елемента по време на $group .

Освен това, ако не искате празния имейл адрес, тогава го изключете в $match тръбопроводен етап, тъй като това е най-ефективното нещо.

db.collection.aggregate([
    { $match: { branch: "CO", "customerEmail": { "$ne": "" } } },
    { $group:
        {
            _id: { customer:"$customerID"},
            email: { "$first": "$customerEmail" }
        }
    }
]);

„Тръбопровод“ връща само „изход“ от етапи като $group или $project че всъщност го молиш. Точно като "Unix pipe" | единствените неща, достъпни за „следващия етап“, са това, което извеждате.

Това трябва да е очевидно просто от:

db.collection.aggregate([
    { $match: { branch: "CO" } },   
    { $group:
        {
            _id: { customer:"$customerID"}
        }
    }
]);

Или дори:

db.collection.aggregate([
    { $match: { branch: "CO" } },   
    { $project:
        {
            _id: { customer:"$customerID"}
        }
    }
]);

Което разбира се връща само _id стойност, тъй като това е всичко, което поискахте.

Имате достъп само във всеки етап на конвейер до данните, които са били „изведени от предишния етап“. В рамките на $group това означава само _id за ключа за групиране и всичко, което е посочено "изрично" използвайки валиден "акумулатор" за всички други имоти, които искате да върнете. Всеки акумулатор (който е валиден за "низ" тук) ще свърши работа, но всичко извън _id задължително използвайте "акумулатор" .

Предлагам да отделите време, за да разгледате всички оператори за агрегиране и какво всъщност правят. Има примерна употреба с всеки оператор




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Валидиране на Mongoose:задължително:невярно, валидиране:регулярен израз, проблеми с празни стойности

  2. Разменете стойностите в масив MongoDB

  3. Връща ли module.require(...).* копие на module.exports.* или препратка към него?

  4. Ember-data и MongoDB, как да се справя с _id

  5. Flask MongoEngine пагинирани документи с поле за изображение