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

Array elemen pencarian Mongodb dengan hasil gabungan

Anda perlu menjalankan pemetaan itu di luar $lookup dengan menjalankan $map bersama dengan $arrayElemAt untuk mendapatkan pasangan tunggal dari kedua array dan kemudian menerapkan $mergeObjects untuk mendapatkan satu objek sebagai hasilnya:

db.Order.aggregate([
    {
        $lookup: {
            from: "products",
            localField: "context.products.id",
            foreignField: "_id",
            as: "productDetails"
        }
    },
    {
        $addFields: {
            productDetails: {
                $map: {
                    input: "$productDetails",
                    in: {
                        _id: "$$this._id",
                        name: "$$this.context.name"
                    }
                }
            }
        }
    },
    {
        $project: {
            _id: 1,
            "context.products": {
                $map: {
                    input: "$context.products",
                    as: "prod",
                    in: {
                        $mergeObjects: [
                            "$$prod",
                            { $arrayElemAt: [ { $filter: { input: "$productDetails", cond: { $eq: [ "$$this._id", "$$prod.id" ] } } }, 0 ] }
                        ]
                    }
                }
            }
        }
    }
])

Taman Bermain Mongo

Tujuan dari langkah terakhir adalah mengambil dua array:products dan productDetails (keluaran dari $lookup ) dan temukan kecocokan di antara mereka. Kami tahu selalu ada satu kecocokan sehingga kami hanya bisa mendapatkan satu item $arrayElemAt 0 . Sebagai output dari $map akan ada satu larik berisi dokumen "gabungan".




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bekerja dengan karakter khusus dalam koleksi Mongo

  2. Bandingkan tanggal (moment.js) di MongoDB

  3. Docker:Menghubungkan wadah Boot Musim Semi dengan wadah Mongo DB

  4. Sampai level berapa MongoDB mengunci penulisan? (atau:apa yang dimaksud dengan per koneksi

  5. Kesalahan koneksi MongoDB di tetesan Digital Ocean