Möchten Sie mit Mongoose Model.findOneAndUpdate() nur ein Dokument finden, wenn jedes Subdoc in Array ein bestimmtes Feld und einen bestimmten Wert hat.Mongoose return doc, wenn jedes Subdoc in Array ein bestimmtes Feld und einen bestimmten Wert hat
In Beispiel 1 unten möchte ich die Suchabfrage so einrahmen, dass jedes Unterdoc im Array den Tag "Montag" und die Anzahl 0 hat. Diese Abfrage würde dem Dokument entsprechen und es für die Aktualisierung verfügbar machen .
Aber die gleiche Abfrage funktioniert nicht für Beispiel 2, da der UnterDokument groupB hat Tag: 'Dienstag', so dass kein Dokument für ein Update zurückgegeben wird.
Example 1 -->
{
count: 0;
groupOffDays: [
{
group: A,
day: 'Monday'
},
{
group: B,
day: 'Monday'
},
{
group: C,
day: 'Monday'
},
]
}
Example 2 -->
{
count: 0;
groupOffDays: [
{
group: A,
day: 'Monday'
},
{
group: B,
day: 'Tuesday' <--match fails as sub doc does not have a value of Monday
},
{
group: C,
day: 'Monday'
},
]
}
Veröffentlichen Sie Ihre Abfrage, die Sie –
gab es einen Versuch in Mongo Shell zuerst versucht haben (bevor es in Mungo versuchen) zu sehen, wie ich das Objekt mit den angewandten Filter finden konnten -> 'Code db.mycoll .find ({groupOffDays: {$ all: [{"$ elemMatch": {tag: "Monday"}}]}}) 'Dies gibt das Objekt zurück, selbst wenn ein Element im Array die Bedingung erfüllt, suchte nach einem Weg Haben Sie nicht das Dokument für Beispiel 2 retrn. –
Sie können es leicht tun, wenn Sie Ihre Struktur zu Schlüsselwertpaar anpassen können. Etwas wie 'groupOffDays: [ {Gruppe: 'A', Tag: 'Montag'} ]' und Sie können Aggregation verwenden. Lass mich wissen was du denkst. – Veeram