sql >> データベース >  >> NoSQL >> MongoDB

MongoDbは列ごとに存在します

    $facetを使用した集計があります;これにより、ドキュメントパスごとに並行してクエリを実行できます。そこで、Costをクエリしてカウントします およびStatus 同じクエリの2つのファセットとして。

    db.test.aggregate( [
      {
          $match: { fld1: "Data" }
      },
      { 
          $facet: {
              cost: [
                  { $match: { cost: { $exists: true } } },
                  { $count: "count" }
              ],
              status: [
                  { $match: { status: { $exists: true } } },
                  { $count: "count" }
              ],
          }
      },
      { 
          $project: { 
              costCount: { $arrayElemAt: [ "$cost.count" , 0 ] },
              statusCount: { $arrayElemAt: [ "$status.count" , 0 ] }
          } 
      }
    ] )
    

    { "costCount" : 4, "statusCount" : 3 }の結果が得られます 、次のドキュメントを使用:

    { _id: 1, fld1: "Data", cost: 12, status: "Y" },
    { _id: 2, fld1: "Data", status: "N" },
    { _id: 3, fld1: "Data" },
    { _id: 4, fld1: "Data", cost: 90 },
    { _id: 5, fld1: "Data", cost: 44 },
    { _id: 6, fld1: "Data", cost: 235, status: "N" },
    { _id: 9, fld1: "Stuff", cost: 0, status: "Y" }
    


    :ファセットを使用した同様のクエリは次のとおりです:2つのフィールドでのMongoDBカスタムソート




    1. Spring-dataでMongodbのデフォルトデータベースを変更/定義するにはどうすればよいですか?

    2. ホストCluster0-XXXXX.mongodb.netのTXTレコードを検索できません

    3. MongoDBBSONガイド

    4. MongoDBからPostgreSQLGroovyアプリケーションへの移行