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

Съвпадение на две различни полета в Mongoose, Aggregate?

Можете да използвате следното агрегиране:

db.col.aggregate([
    {
        $addFields: {
            weightedIds: {
              $map:
                 {
                   input: "$weighted",
                   as: "w",
                   in: "$$w.phaseId"
                 }
            }
        }
    },
    {
      $project: {
        _id: 1,
        weighted: 1,
        phases: {
            $filter: {
             input: "$phases",
             as: "phase",
             cond: { $gte: [ { $indexOfArray: [ "$weightedIds" , "$$phase._id" ] }, 0 ] }
            }
        }
      }
    }
])

Използваме $map да вземе само phaseId поле на weighted и тогава можем да филтрираме phases използвайки $filter проверка за всяка фаза дали съответния id съществува (с помощта на $indexOfArray което връща -1 в противен случай)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. JSON от EJS към JSON обект в JS

  2. MongoDB:масив от заявки за „истинска“ стойност при индекс n

  3. Как мога да деактивирам съобщенията в журнала на MongoDB в конзолата?

  4. MongoError:пулът от сървърни екземпляри беше унищожен

  5. Как да получите последния документ за всеки ден в колекцията на MongoDB?