Ich habe eine Anwendung, die native MongoDb verwendet, wir zeigen es jetzt auf eine Azure Cosmos DB-Instanz, aber wir bekommen jetzt keine Ergebnisse bei der Abfrage von Arrays.MongoDB.Driver mit Cosmos DB Array-Suchen
Zum Beispiel haben wir folgende Kunden:
{
"email" : "[email protected]",
"data" : {
"customerGuid" : "a30b5d75ca6241dcbd0260b2516a2165",
"addresses" : [
{
"firstName" : "firstname",
"lastName" : "lastname",
"postalCode" : "SY1 3VE",
}
]
}
}
Und wir mit dem MongoDB.Driver (via AsQueryable und Linq) alle Kunden auf ein Element in der Adressen-Array passende finden
dh
var col = db.GetCollection<Customer>("Customer");
var custQuery = col.AsQueryable()
.Where(c => c.Data.Addresses.Any(a => a.PostalCode == "SY1 3VE"));
Aber ich bin immer noch keine Streichhölzer. Graben weiter, so scheint es zu sein, um eine Mongo Abfrage zu erzeugen, die wie folgt aussieht:
{aggregate([{ "$match" : { "data.addresses.postalCode" : "SY1 3VE" } }])}
Welche nicht für mich arbeiten, wenn ich entweder manuell gegen die Datenbank versuchen.
Mache ich etwas falsch? Oder ist die Kosmos-Mongo-Db-Implementierung noch nicht vollständig kompatibel mit dem MongoDB.Driver?
Die Abfrage sieht gut aus. Sind Sie sicher, dass Sie die richtige Datenbank/Sammlung abfragen? – Veeram
Ich bin mir ziemlich sicher. Wenn ich dasselbe über roboMongo 0-Ergebnisse ausführe, dann bearbeite es so, dass es aggregiert ([{"$ match": {"data.addresses": {$ elemMatch: {"postalCode": "SY1 3VE"}}}}]) Es funktioniert dann! – Vdex
Einzelabfrage funktioniert mit und ohne elemMatch-Operator. https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#single-query-condition. Kannst du es in Mongo Shell versuchen? – Veeram