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

Agregasi MongoDB:Pencarian ganda, dan gabungkan respons pencarian ke objek masing-masing

Coba kueri ini :

db.companies.aggregate([
    { $match: { _id: companyId } },
    { $unwind: "$professionals_customers" },
    {
        $lookup: {
            from: "companies",
            localField: "professionals_customers.company",
            foreignField: "_id",
            as: "professionals_customers.company"
        }
    },
    {
        $lookup: {
            from: "users",
            localField: "professionals_customers.contact",
            foreignField: "_id",
            as: "professionals_customers.contact"
        }
    },
    {
        $addFields: {
            "professionals_customers.company": {
                $arrayElemAt: ["$professionals_customers.company", 0]
            },
            "professionals_customers.contact": {
                $arrayElemAt: ["$professionals_customers.contact", 0]
            }
        }
    },
    {
        $group: { _id: "$_id", professionals_customers: { $push: "$professionals_customers" }, data: { $first: "$$ROOT" } }
    },
    { $addFields: { "data.professionals_customers": "$professionals_customers" } },
    { $replaceRoot: { newRoot: "$data" } }
])

Uji : MongoDB-Playground

Catatan : Jika perlu, Anda perlu mengonversi bidang/input yang bertipe string ke ObjectId() . Hal dasarnya adalah Anda perlu memeriksa jenis dua bidang yang dibandingkan atau cocok atau tidak dengan input-to-field-in-DB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di MongoDB, jika indeks ada di 3 bidang, kita bisa menggunakan indeks itu saat menanyakan 2 bidang? (wildcard di bidang ke-3)

  2. MongoDB C#:Update.pullAll tidak menghapus item

  3. Agregat Mongodb:konversikan tanggal ke zona waktu lain

  4. Bagaimana cara memeriksa apakah koneksi MongoDB masih hidup di Node.js

  5. Penggunaan Hibernate OGM dengan cloud MongoDB Atlas M0 (Tingkat Gratis)