sql >> Databasteknik >  >> RDS >> Mysql

MongoDB sammanställda frågor vs. MySQL SELECT field1 FROM table

Anställda är enskilda enheter; Därför vill du förmodligen inte modellera age av en gruppmedlem så djupt i den rika strukturen av avdelningar och platser och team. Det går alldeles utmärkt att ha separata employees samla in och gör helt enkelt:

db.businesses.aggregate([
{$match: {"age": {$gt: 50} }}
,{$sort: {"age": -1} }
]);

Djupt i dina businesses samling du kan ha:

{ teams: [ {name: "T1", employees: [ "E1", "E34" ]} ] }

Testa detta alternativt:

db.businesses.aggregate([ your pipeline] ,{allowDiskUse:true});

OP har en uppsättning av 10 biz -> 10 loc -> 10 avdelningar -> 10 lag -> 100 emps. De första 3 avveckningarna skapar en 10000x explosion av data men den sista är 100x utöver det. Vi kan krympa träffen genom att använda $filter :

db.businesses.aggregate([
{ $unwind: "$locations" },
{ $unwind: "$locations.departments" },
{ $unwind: "$locations.departments.teams" },

{$project: {
        XX: {$filter: {
                    input: "$locations.departments.teams.employees",
                    as: "z",
                    cond: {$gte: [ "$$z.age", 50] }
            }}
    }}
,{$unwind: "$XX"}
,{$sort: {"XX.age":-1}}])


  1. dbms_metadata.get_ddl fungerar inte

  2. 2nd Quadrant på PostgresConf US 2018

  3. Vinkelfel - ReferenceError:$modal är inte definierad

  4. ORACLE IIF uttalande