我无法让Cosmos DB在查询中找到超过1级的记录:
文件:
{ "CustomerId": 1, "Orders": [ { "OrderId": 1, "OrderCode": "ONE", "OrderName": "Order One", "Products": [ { "ProductCode": "ONE", "ProductName": "Product One" } ] } ] }
查询:db.customers.find({ "Orders.Products.ProductCode": "ONE" })
它适用于MongoDB shell,但不适用于CosmosDB。我错过了一些明显的东西吗?
答案 0 :(得分:0)
我认为问题的关键在于文档中存在嵌套数组,并且您提供的查询可能仅适用于以下文档:
"CustomerId" : 1,
"Orders" : {
"OrderId" : 1,
"OrderCode" : "ONE",
"OrderName" : "Order One",
"Products" : {
"ProductCode" : "ONE",
"ProductName" : "Product One"
}
}
您可以参考MongoDB官方documentation并使用$elemmatch
运算符查询嵌套文档中的字段。
<强> 查询 强>:
{ "Orders": { $elemMatch: { Products : {$elemMatch : {ProductCode : "ONE" } } } } }
希望它对你有所帮助。
答案 1 :(得分:0)
Cosmosdb在嵌套文档中没有要查询的内容。您需要使用 ARRAY_CONTAINS
内置函数。所以它会是这样的:
SELECT c.Orders.Products.ProductCode, c.Orders.Products.ProductName
FROM c
WHERE c.Orders.Products.ProductCode = "ONE" or ARRAY_CONTAINS(c.Orders.Products, { "ProductCode": "ONE" })