C# 在DocumentDB中是否可以像Sql Server中那样进行“Where In”查询?
我有以下简单的Sql,其中我正在DocumentDB中尝试,但无法在查询资源管理器上运行:C# 在DocumentDB中是否可以像Sql Server中那样进行“Where In”查询?,c#,azure-cosmosdb,C#,Azure Cosmosdb,我有以下简单的Sql,其中我正在DocumentDB中尝试,但无法在查询资源管理器上运行: SELECT * FROM root.DocumentDbTest_AllFieldTypes f WHERE f.field1 NOT IN ( SELECT g.field1 FROM root.DocumentDbTest_AllFieldTypes g WHERE g.time
SELECT * FROM root.DocumentDbTest_AllFieldTypes f
WHERE f.field1 NOT IN (
SELECT g.field1 FROM root.DocumentDbTest_AllFieldTypes g
WHERE g.time = "09:12:34"
);
我遇到以下错误:
有人能告诉我在查询中执行此操作的正确语法吗?文档支持IN运算符IN WHERE子句;但它不支持子选择
换句话说。。。支持这一点:
选择food.id,
食品说明,
食品标签,
food.foodGroup,
食品版
来自食物
家禽产品中的food.foodGroup,
香肠和午餐肉
这是不受支持的:
挑选*
来自root.DocumentDbTest\u所有字段类型f
其中f.field1不在
选择g.field1
来自root.DocumentDbTest\u AllFieldTypes g
其中g.time=09:12:34;
如果您想在DocumentDB中看到Subselect,请在上投票支持此功能,表达您的意见。这是教程,也许它会帮助您在查询中需要in子句吗?您正在做的是关系联接。DocumentDB提供了一个IN运算符,但仅用于在您尝试在文档之间执行联接时对照值列表进行检查。这不是文档数据库的典型场景。事实上,联接运算符只支持文档内联接,即在同一文档内联接以提取子节点。@PanagiotisKanavos one!真实示例—我有一些表Developers、Managers和Mentors,它们被加入到第三个表DevManagers和DevMentors以及ManagerMentorControl中,它们的ID使用从经理/导师到开发人员/梅托的1对多进行控制。现在,为了通过安全逻辑查找某些受保护的表数据,我必须先检查经理是否有权访问开发人员,导师是否有权访问开发人员,然后再允许经理在第三个表上进行查找。由于业务原因,我不能将差异类型包含在其中。我希望DocDb是MS,所以它可能是:@PanagiotisKanavos,对不起,忘了添加点-devmanager和devmentor实际上是角色组,而不是个人用户。嘿@aliuy谢谢你的回复-我害怕这个答案。这个限制实际上使它很难实现!!然后在我们的业务场景中实现DocDB…:@Deb恰恰相反——事实上,文档或类似文档的数据库在商业中已经使用了几十年。想想SharePoint吧。这是一个不同的模型,需要不同的设计。有人可能会说,将订单表示为文档比单独的标题表和行表更容易