Ich habe eine Microsoft Azure CosmosDB MongoDB API-Datenbank und ich versuche, alle Dokumente zu erhalten, wo ein Array-Feld vollständig in meinem Sucharray enthalten ist.Azure Cosmos DB überprüfen, ob Array im Feld im Sucharray enthalten ist
Also, was ich für ist bin auf der Suche, die Sammlung Test enthält die Dokumente gegeben: {"id":1,"filters":[1,2]} {"id":2,"filters":[1,3]}
wenn ich ausführen: db.test.find({"filters":{"$elemMatch":{$nin: [1,3]}}})
ich zurück: {"id":1,"filters":[1,2]}
Wenn jedoch Ich negiere es, da ich alle Dokumente mit Filtern vollständig in meiner Suche enthalten möchte, wird die vollständige Liste der Dokumente zurückgegeben. db.test.find({"filters":{$not:{"$elemMatch":{$nin: [1,3]}}}})
kehrt:
{"id":1,"filters":[1,2]} {"id":2,"filters":[1,3]}
im Gegensatz zu dem, was in dem Artikel erwähnt wird: Check if every element in array matches condition
ich die $ IsSubset auf einem Aggregat auch versucht, ohne Erfolg (0 Ergebnisse):
db.test.aggregate([{$match:{$issubset:["$filters",[1,3]]}}])
Ich habe sogar versucht (0 Ergebnisse):
db.test.aggregate([{$match:{$issubset:[[1],[1,3]]}}])
Jeder, der eine Vorstellung davon, was ihr geschieht?
Ist es mein Fehler?
Listenelement Benutzt ich die Funktionen von mongoDB, die noch nicht in CosmosDB implementiert sind?
Ist es CosmosDB Fehler?
Vielen Dank!
Detailliert ein wenig weiter: Ich brauche die Dokumente mit allen Elementen in der Filter-Array in meiner Suche enthalten zurückgegeben werden. Selbst wenn das Dokument nur teilweise übereinstimmt, aber keine Übereinstimmung außerhalb der Suche vorhanden ist, sollte es dennoch zurückgegeben werden. Hinzufügen dieser zur ersten Frage ... –