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

Pokud je Mongo $lookup levé vnější spojení, jak to, že vylučuje neodpovídající dokumenty?

Toto chování nesouvisí s $lookup , je to proto, že výchozí chování pro $unwind je vynechat dokumenty, kde odkazované pole chybí nebo je prázdné pole.

Chcete-li zachovat nevinuté dokumenty, i když profile.universities je prázdné pole, můžete nastavit jeho preserveNullAndEmptyArrays možnost true :

db.users.aggregate([
    {
        $unwind: "$profile",
        $unwind: {
            path: "$profile.universities",
            preserveNullAndEmptyArrays: true
        }
    },
    {
        $lookup: {
            from: "universities",
            localField: "profile.universities._id",
            foreignField: "_id",
            as: "profile.universities"
        }
    },
    {
        $group: {
            _id: "$_id",
            universities: {
                $addToSet: "$profile.universities"
            }
        }
    }
]).pretty()



  1. mongo přidat do vnořeného pole, pokud položka neobsahuje dvě odpovídající pole

  2. Jak aktualizovat objekt v mongodb přes mongoose?

  3. SyntaxError:neplatné ID vlastnosti - MongoDB

  4. Jaké jsou výhody a nevýhody DynamoDB s ohledem na jiné databáze NoSQL?