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

вземете съответната информация срещу стойността на обекта в MongoDB

  • $arrayElemAt за да получите първия елемент от dic масив
  • $objectToArray преобразувайте A обект към масив
  • $reduce за повторение на цикъл на елемент над конвертирания масив и проверка на условието, ако _id.A съвпада с данни A след това върне конкретно поле,
  • направете същия процес за B и C
db.collection.aggregate([
  {
    $addFields: {
      dic: { $arrayElemAt: ["$dic", 0] }
    }
  },
  {
    $project: {
      _id: 1,
      dic: {
        A: {
          $reduce: {
            input: { $objectToArray: "$dic.data.A" },
            initialValue: "Not Found",
            in: {
              $cond: [
                { $eq: ["$$this.k", "$_id.A"] },
                "$$this.v.name",
                "$$value"
              ]
            }
          }
        },
        B: {
          $reduce: {
            input: { $objectToArray: "$dic.data.B" },
            initialValue: "Not Found",
            in: {
              $cond: [
                { $eq: ["$$this.k", "$_id.B"] },
                "$$this.v.description",
                "$$value"
              ]
            }
          }
        },
        C: {
          $reduce: {
            input: { $objectToArray: "$dic.data.C" },
            initialValue: "Not Found",
            in: {
              $cond: [
                { $eq: ["$$this.k", "$_id.C"] },
                "$$this.v.description",
                "$$value"
              ]
            }
          }
        }
      }
    }
  }
])

Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. не може да преобразува от 'MongoDB.Driver.IMongoCollection<>' в 'System.Collections.Generic.IEnumerable<>'

  2. Премахване на дублирани документи въз основа на поле

  3. Цикъл на резултатите с външно извикване на API и findOneAndUpdate

  4. MongoDB противоположно на $addToSet

  5. Нива на несигурност на MongoDB и как да ги избегнем