MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Agregacja MongoDB :Podwójne wyszukiwanie i scalanie odpowiedzi wyszukiwania do odpowiedniego obiektu

Wypróbuj to zapytanie :

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" } }
])

Test: MongoDB-Plac zabaw

Uwaga: W razie potrzeby musisz przekonwertować pola/dane wejściowe typu ciąg do ObjectId() . Podstawową rzeczą jest to, że musisz sprawdzić typy dwóch porównywanych pól lub dopasowania input-to-field-in-DB, czy nie.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB DBRef O USUWANIU KASKADY

  2. Java MongoDB zapisuje wiele dokumentów jednocześnie

  3. Zarządzanie wieloma technologiami baz danych za pomocą ClusterControl

  4. W Mongodb, Jak mogę indeksować pola (pola) w kolekcji(ach) tylko w węźle drugorzędnym (zestaw replik)

  5. Usuwanie danych MongoDB - odzyskiwanie miejsca na dysku