【发布时间】:2018-05-15 01:25:31
【问题描述】:
假设我们有两个集合,一个用户集合和一个项目集合。
用户集合,每个User文档存储用户的购买产品id。
{
"id" : "UserA",
"PurchasedProductId" : ["ProductId1", ... "ProductIdNN"]
}
Item集合,每个Item文档存储产品信息。
{
"Id" : "ProductId1"
}
我希望查询将返回项目集合的前 10 个项目,按上次更新时间排序,另外,如果用户之前已经购买过该项目,则查询应该跳过用户购买的项目并返回未购买的项目仅限项目。
在 MsSQL 中我们可以简单地不存在,我们如何在 documentDB 中有效地做到这一点?
我们如何在 documentDB 中做到这一点?
我可以想象我们当然可以通过
SELECT * WHERE (c.id != id1 && c.id != id2 && ..... c.id != idNNNN) LIMIT 10
但实际上,如果每个用户都购买了超过 500 件商品,这是否更有效?
什么是有效的方法?
【问题讨论】:
-
购买的商品id是否作为数组存储在用户集合中?请提供您在馆藏文件中的样本格式?
-
@JayGong 我不知道除了存储在数组中还有什么其他方法。实际上,我的问题是可以将任何结构更改为使其高效。我应该如何存储数据以使其执行 NOT EXISTS 表现良好?
标签: performance nosql azure-cosmosdb