MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

dapatkan informasi yang relevan terhadap nilai objek di MongoDB

  • $arrayElemAt untuk mendapatkan elemen pertama dari dic susunan
  • $objectToArray konversi A objek ke array
  • $reduce untuk mengulangi loop elemen di atas array yang dikonversi dan memeriksa kondisi jika _id.A cocok dengan data A lalu kembalikan bidang tertentu,
  • lakukan proses yang sama untuk B dan 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"
              ]
            }
          }
        }
      }
    }
  }
])

Taman bermain




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb tidak dimulai di ubuntu 18.04

  2. Node.js Mongoose .update dengan ArrayFilters

  3. Apakah ada cara untuk memulihkan dokumen yang baru dihapus di MongoDB?

  4. Bagaimana MongoDB memperlakukan kueri find().sort() sehubungan dengan indeks tunggal dan majemuk?

  5. MongoDB:kehabisan memori