我有一個使用本機mongoDb的應用程序,現在我們將它指向Azure Cosmos數據庫實例,但是現在我們在查詢數組時沒有得到結果。MongoDB.Driver與Cosmos DB數組搜索
例如,我們有以下客戶:
{
"email" : "[email protected]",
"data" : {
"customerGuid" : "a30b5d75ca6241dcbd0260b2516a2165",
"addresses" : [
{
"firstName" : "firstname",
"lastName" : "lastname",
"postalCode" : "SY1 3VE",
}
]
}
}
而且我們正在使用的MongoDB.Driver(通過AsQueryable已和LINQ)找到所有客戶的地址數組中的一個項目匹配
即
var col = db.GetCollection<Customer>("Customer");
var custQuery = col.AsQueryable()
.Where(c => c.Data.Addresses.Any(a => a.PostalCode == "SY1 3VE"));
但是,我沒有得到任何匹配。在進一步的挖掘,它似乎產生蒙戈查詢,看起來像:
{aggregate([{ "$match" : { "data.addresses.postalCode" : "SY1 3VE" } }])}
當我嘗試手動對數據庫或者這並不爲我工作。
我做錯了什麼?或者是Cosmos Mongo Db實現與MongoDB.Driver不完全兼容呢?
該查詢看起來不錯。你確定你在查詢正確的數據庫/集合嗎? – Veeram
我很確定。如果我通過roboMongo 0結果運行同樣的事情,請將其編輯爲 aggregate([{「$ match」:{「data.addresses」:{$ elemMatch:{「postalCode」:「SY1 3VE」}}}}] ) 它然後工作! – Vdex
單個查詢條件與elemMatch操作符一樣可用。 https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#single-query-condition。你可以嘗試在蒙戈殼? – Veeram