sql >> データベース >  >> RDS >> Mysql

MongoDB集計クエリとMySQLSELECTfield1FROMテーブル

    従業員は単一のエンティティです。したがって、おそらくageをモデル化する必要はありません。 部門や場所、チームの豊富な構造に深く関わっているチームメンバーの別のemployeesがいることはまったく問題ありません コレクションと単純な実行:

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

    businessesの奥深く あなたが持つことができるコレクション:

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

    または、これを試してください:

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

    OPには、10 biz-> 10 loc-> 10 depts-> 10 team->100empsのセットアップがあります。最初の3つの巻き戻しは、データの10000倍の爆発を作成しますが、最後の1つはそれを100倍超えています。 $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. SisenseでのJavaデータの操作

    2. mysqlテーブルの重複する値を削除する方法

    3. Djangoの一意のモデルフィールドと大文字と小文字の区別(postgres)

    4. count(*)列でエイリアスを使用して、have句で参照できないのはなぜですか?