sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $lookup na vnořeném dokumentu

v tomto případě je vyžadována pěkná hra s $unwind a $project v agregačním rámci

viz níže:

db.alumni.aggregate([
    {$match: {_id: 'john'}},
    {$unwind:"$items"},
    {$unwind:"$items.items"},
    {$lookup: {
        from: 'schools', 
        localField: 'items.items.school', 
        foreignField: '_id', 
        as: 'schoolInfo'}},
    {$unwind:"$schoolInfo"},
    {$project:{
        "_id":1,
        "items":[{
            "name":"$items.name",
            "items":[{
            "school":"$schoolInfo._id"    ,
            "grad":"$items.items.grad"    ,
            "schoolInfo":"$schoolInfo"
            }]
        }]            
    }}
]).pretty()

abyste viděli, jak to funguje – zkuste z dotazu odstranit fáze agregace a zkontrolujte strukturu dokumentu.



  1. Potřebujete vypočítat rozdíl datetime pro pole datetime uložené ve formátu řetězce v MongoDB

  2. Jakmile budete hotovi, řádně uzavřete spojení mangusty

  3. Soubory žurnálu jsou přítomny v adresáři žurnálu, ale spouštějí se bez povolení žurnálování

  4. Uložená procedura v MongoDB