在documentDB中搜索substring

sat*_*r V 5 c# search sql-like azure-cosmosdb

这是示例documentDB文档,

我想获得一个或多个科目失败的所有文件

我发现了类似的东西

SELECT 
    *
FROM students s 
JOIN c IN s.subjects 
WHERE c.result = "pass"
Run Code Online (Sandbox Code Playgroud)

我想通过使用c#代码检索

{
  "id": "0066a253-f042-4213-b06e-65b1ea1e49aa",
  "name": "Sunny",
  "rollNo": 123,
  "class": "2nd",
  "section": "B",
  "Department": {
    "name": "CSE",
    "id": "cse",
    "subjects": [
      {
        "id": "subject-1",
        "marksObtained": 66,
        "maxMarks": 100,
        "result": "pass"
      },
      {
        "id": "subject-2",
        "marksObtained": 56,
        "maxMarks": 75,
        "result": "pass"
      },
      {
        "id": "subject-3",
        "marksObtained": 22,
        "maxMarks": 100,
        "result": "fail"
      },
      {
        "id": "subject-4",
        "marksObtained": 36,
        "maxMarks": 50,
        "result": "pass"
      },
      {
        "id": "subject-5",
        "marksObtained": 16,
        "maxMarks": 100,
        "result": "fail"
      }
    ]
  },
  "Type": "Student"
}
Run Code Online (Sandbox Code Playgroud)

我试过这样的

var result = client.CreateDocumentQuery<dynamic>(dc.SelfLink, "SELECT s.id as id,s.Name as Name,s.Age as Age,s.section as section,s.subjects as subjects FROM students s JOIN c IN s.subjects WHERE c.result = \"pass\"").ToList(); 

List<Student> students = new List<Student>(); 
foreach(var std in result) 
{ 
     students.Add((Student)std); 
} 
Run Code Online (Sandbox Code Playgroud)

上面的东西是我得到的代码,但即使我给pa或pas或pass或p或ass,或者当时我也应该得到一些东西,我需要在SQL中使用LIKE的功能

这有什么解决方案吗?我需要SQL中的LIKE功能来从documentDB中检索数据

And*_*Liu 8

更新:自15年5月6日,添加DocumentDB一组字符串的功能,包括STARTSWITH,ENDSWITH,和CONTAINS.请注意,大多数这些函数不会在索引上运行并强制扫描.

尚未在DocumentDB中实现像SQL的LIKE'%%'这样的通配符.

请在DocumentDB的反馈论坛上表达您的意见并投票支持此功能.

  • This would be a good answer if it contained an example. (3认同)

小智 5

在过去几个月中引入了一些新功能.对于你的特殊情况,我认为你可以使用:

WHERE STARTSWITH(c.result, "p")
Run Code Online (Sandbox Code Playgroud)