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

Jak używać $lookup jako INNER JOIN w agregacji MongoDB?

Wystarczy dodać $match etap potoku, który pomija dokumenty z pustym inventory_docs pole. Nie ma innego sposobu, aby to osiągnąć.

Zapytanie:

db.getCollection('inventory').aggregate([
    {
        $lookup: {
            from: "orders",
            localField: "sku",
            foreignField: "item",
            as: "inventory_docs"
        }
    },
    {
        $match: {
            "inventory_docs": {$ne: []}
        }
    }
])

Wynik:

{
    "_id" : 1.0,
    "sku" : "abc",
    "description" : "product 1",
    "instock" : 120.0,
    "inventory_docs" : [ 
        {
            "_id" : 1.0,
            "item" : "abc",
            "price" : 12.0,
            "quantity" : 2.0
        }
    ]
}

{
    "_id" : 4.0,
    "sku" : "jkl",
    "description" : "product 4",
    "instock" : 70.0,
    "inventory_docs" : [ 
        {
            "_id" : 2.0,
            "item" : "jkl",
            "price" : 20.0,
            "quantity" : 1.0
        }
    ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wyszukiwać słowo lub ciąg we wszystkich polach w dokumencie za pomocą MongoDB?

  2. MongoDb z FastAPI

  3. Przykładowe operatory MongoDB

  4. Jak zmienić uprawnienia użytkownika MongoDB?

  5. Jak sprawić, by zapytanie LIKE działało w MongoDB?