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

Вложени $addFields в MongoDB

Тъй като използвате $unwind можете да направите това лесно, като добавите $match тъй като израз:"inquiries.routeHistory.status": "ended" ще върне true ако има никъв документ в routeHistory с такъв статус:

db.collection.aggregate([
    {
        $unwind: "$inquiries"
    },
    {
        $match: {
            "inquiries.routeHistory.status": "ended"
        }
    },
    {
        $addFields: {
            "inquiries.routeHistory": {
                $filter: {
                    input: "$inquiries.routeHistory",
                    cond: {
                        $eq: [ { $max: "$inquiries.routeHistory.routeDate" }, "$$this.routeDate" ]
                    }
                }
            }
        }
    },
    {
        $group: {
            _id: "$_id",
            callId: { $first: "$callId" },
            caller: { $first: "$caller" },
            inquiries: { $push: "$inquiries" }
        }
    }
])

Mongo Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо не мога да стартирам обяснение при актуализация на MongoDB?

  2. Отстраняване на неизправности в MongoDB Sharded Cluster

  3. Каква е основната архитектура на приложение node.js + mongodb?

  4. Какъв е синтаксисът за Dates в MongoDB, работещ на MongoLab?

  5. Как да получите всички стойности, които съдържат част от низ, използвайки mongoose find?