sql >> Databasteknik >  >> NoSQL >> MongoDB

Villkorlig $lookup i MongoDB?

Du kan använda nedanstående aggregering

$expr låter dig använda aggregeringsoperatorn inuti den. Så du kan enkelt använda $cond aggregering för de användare som har allowedRoles och vem har inte

db.users.aggregate([
  { "$match": { "name": "Charles" }},
  { "$lookup": {
    "from": "roles",
    "let": { "ar": "$allowedRoles" },
    "pipeline": [
      { "$match": {
        "$expr": {
          "$cond": [
            { "$eq": [{ "$type": "$$ar" }, "missing"] },
            {},
            { "$in": ["$_id", "$$ar"] }
          ]
        }
      }}
    ],
    "as": "roles"
  }}
])



  1. MongoDB Backup Management Tips för delade kluster

  2. MongoDB-installation med node.js:Fel:kunde inte ansluta till [localhost:27017]

  3. Vilka säkerhetsmekanismer har Meteor?

  4. Hur använder jag aggregeringsoperatorer i en $match i MongoDB (till exempel $year eller $dayOfMonth)?