MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

lấy thông tin liên quan so với giá trị đối tượng trong MongoDB

  • $arrayElemAt để lấy phần tử đầu tiên từ dic mảng
  • $objectToArray chuyển đổi A đối tượng với mảng
  • $reduce để lặp lại vòng lặp của phần tử bên trên mảng đã chuyển đổi và kiểm tra điều kiện nếu _id.A khớp với dữ liệu A sau đó trả về trường cụ thể,
  • thực hiện quy trình tương tự cho BC
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"
              ]
            }
          }
        }
      }
    }
  }
])

Sân chơi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. java.lang.IllegalArgumentException:Kết quả mong đợi duy nhất hoặc null, nhưng có nhiều hơn một! - Spring Data Mongo

  2. Kết nối với một cơ sở dữ liệu cụ thể theo mặc định trong mongodb

  3. Mongodb .net không đồng bộ đang chờ đợi

  4. Truy vấn MongoDB để viết hoa chữ cái đầu tiên trong cơ sở dữ liệu hiện có

  5. Sắp xếp có điều kiện Mongodb