2017-07-11 1 views
2

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!

+0

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 ... –

Antwort

0

Ich habe einen Serverfehler beim Testen von $ nin auf meiner Seite festgestellt. Dann habe ich versucht, $ zu verwenden und Multi-Sub-Abfragen zu kombinieren, und es hat gut funktioniert. Bitte verwenden Sie den folgenden Code, um alle Dokumente mit Filtern abzufragen, die vollständig in Ihrer Suche enthalten sind.

+0

Hallo, danke, Entschuldigung für die späte Antwort, es erfüllt nicht genau das, was ich versuchte zu erklären: Ich brauche die Dokumente mit allen Elementen in der Filter-Array in meiner Suche enthalten zurück. Auch wenn das Dokument nur eine teilweise Übereinstimmung hat, aber keine Übereinstimmung außerhalb der Suche, sollte es dennoch zurückgegeben werden. Hinzufügen dieser zur ersten Frage ... –

Verwandte Themen