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

Tablica wyszukiwania elementów Mongodb z połączonym wynikiem

Musisz uruchomić to mapowanie poza $lookup uruchamiając $map wraz z $arrayElemAt aby pobrać pojedynczą parę z obu tablic, a następnie zastosować $mergeObjects aby w rezultacie uzyskać jeden obiekt:

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

Plac zabaw Mongo

Celem ostatniego kroku jest pobranie dwóch tablic:products i productDetails (wyjście $lookup ) i znajdź dopasowania między nimi. Wiemy, że zawsze jest jedno dopasowanie, więc możemy uzyskać tylko jeden przedmiot $arrayElemAt 0 . Jako wynik $map będzie pojedyncza tablica zawierająca „scalone” dokumenty.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie o dokument i wszystkie jego dokumenty podrzędne, które pasują do warunku w mongodb (przy użyciu wiosny)

  2. W jaki sposób MongoDB ocenia wiele instrukcji $lub?

  3. Połącz mongo db ze zdalnym serwerem nodejs

  4. Znajdź dokument na podstawie odniesienia do rodzica dziecka

  5. MongoDB i C# Find()