MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose-Filter basierend auf dynamischem Datumsschlüssel mit Wert

Wenn Sie nach Eigenschaften in eingebetteten Dokumenten suchen möchten, müssen Sie die Punktnotation

verwenden

Dies wird nicht funktionieren, da Sie Mongoo auffordern, das Dokument zu finden, dessen Anwesenheitsobjekt dem gleichen gegebenen Objekt entspricht.

{ "attendances": {"2019-08-26": "Present"}}

dies funktioniert nur, wenn das Anwesenheitsobjekt in Ihrer Datenbank nur

enthält
{ "attendances": {"2019-08-26": "Present"}}

Das bedeutet, dass Sie Mongoo fragen, ob das gespeicherte Objekt gleich dem angegebenen Objekt ist, und es wird false

zurückgeben
 { "attendances": {"2019-08-26": "Present" , "2019-08-27": "Sick"}} ==  { "attendances": {"2019-08-26": "Present"}}

Dazu müssen Sie die Punktnotation

verwenden
 Employee.collection.countDocuments({"attendances.2019-08-26":"Present"},(err,data)=>{
    if(err){
      res.status(500)
      res.send(err)
    }else{
      res.status(200)
      res.json(data)
    }
  })