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

Mongodb Опитва се да получи избрани полета за връщане от агрегат

Най-общо казано тук, $project разчита на "абсолютния път" към свойството на полето в документа от "дясната" страна. Преки пътища като 1 са само за мястото, където този елемент всъщност е най-горното ниво на документа.

Също така трябва да можете да запазвате полета, когато $group , така че тук използвате различни оператори за групиране като $first и $addToSet или $push за да запазите информацията, която изтегляте от вътрешния масив. И трябва да $unwind два пъти и тук, тъй като комбинирате „типове“ в документи и не искате само $first в този случай.

OrderModel.aggregate([
    { "$unwind": "$products" },
    { "$unwind": "$products.types" },
    { "$group": {
        "_id": "$products.name",
        "active": { "$first": "$products.active" },
        "types": { "$addToSet": "$products.types" },
        "quantity": { "$sum": 1 }
    }},
    { "$project": {
        "_id": 0,
        "name": "$_id",
        "active": 1,
        "types": 1,
        "quantity": 1
    }}
],function(err,results) {

});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB текстов индексиращ масив обекти колони

  2. Имам нужда от съвет относно NoSQL/MongoDb и структура на данни/модели

  3. Четене на огромна MongoDB колекция от Spark с помощта на Worker

  4. заявка за извличане на множество обекти в масив в mongodb

  5. NodeJS + MongoDB:Получаване на данни от колекция с findOne ()