sql >> Database >  >> NoSQL >> MongoDB

MongoDb Bestaat per kolom

Ik heb een aggregatie met behulp van $facet; hierdoor kunnen query's parallel worden uitgevoerd voor elke documentdoorgang. Dus we vragen en tellen de Cost en Status als twee facetten van dezelfde zoekopdracht.

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 ] }
      } 
  }
] )

Ik krijg een resultaat van { "costCount" : 4, "statusCount" : 3 } , met behulp van de volgende documenten:

{ _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" }


OPMERKING :Hier is een vergelijkbare zoekopdracht die de facetten gebruikt:MongoDB Aangepast sorteren op twee velden .




  1. Hoe voeg je nieuwe objecten toe in een geneste array voor mongodb met node.js?

  2. Hoe retourneer ik een aggregaat van subarrays met een filter op de bovenste array?

  3. Redis lua-script werkt niet

  4. Hoe u terugbellen in mangoest instelt, in een globale variabele