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

Как да върнете масив от низ с mongodb агрегиране

.aggregate() методът винаги връща Objects каквото и да правите и това не може да се промени.

За вашата цел вероятно е по-добре да използвате .distinct() вместо това, което просто връща масив от различни стойности:

db.users.distinct("emails.address");

Кой е точно желаният от вас изход:

["[email protected]","[email protected]","[email protected]"]

Ако наистина искате да използвате .aggregate() тогава трансформацията само до стойностите трябва да се случи "извън" на израза при последваща обработка. Освен това трябва да използвате $unwind когато работите с масиви като този.

Можете да направите това с JavaScript .map() например:

db.users.aggregate([
    { "$unwind": "$emails" },
    { "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })

Което дава същия изход, но .map() извършва трансформацията от страна на клиента вместо на сървъра.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Обектът на документа на MongoEngine, направен с помощта на from_json, не се запазва

  2. Големи работни потоци от данни с помощта на панди

  3. Mongoose/node.js как да намирате, попълвате, правите неща, „освобождавате“ и актуализирате

  4. Итерация на асинхронен курсор с асинхронна подзадача

  5. Получаване на изключение на нулев указател Монго агрегиране с помощта на Spring Data (динамични полета)