【问题标题】:search by substring in documentDB在 documentDB 中按子字符串搜索
【发布时间】:2015-02-28 16:20:38
【问题描述】:

这是示例 documentDB 文档,

我想获取所有在一个或多个科目中不及格的文件

我发现了类似的东西

SELECT 
    *
FROM students s 
JOIN c IN s.subjects 
WHERE c.result = "pass"

我想用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"
}

我试过这样

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); 
} 

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

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

【问题讨论】:

  • 你的努力在哪里?
  • from f in client.CreateDocumentQuery(dc.SelfLink) where f.subjects[0].result == "pass" select f;
  • var result = client.CreateDocumentQuery(dc.SelfLink, "SELECT s.id as id,s.Name as Name,s.Age as Age,s.section as section,s.作为科目的科目 FROM students s JOIN c IN s.subjects WHERE c.result = \"pass\"").ToList();列表 学生 = 新列表(); foreach(var std in result) { students.Add((Student)std);上面的东西是我得到的代码,但即使我给了 pa 或 pas 或 pass 或 p 或 ass 或者我也应该得到一些我需要 SQL 中的 LIKE 功能的东西
  • 不要加评论,没人会这样看。将其添加到问题中。
  • 感谢@mybirthname 我是新手

标签: c# search sql-like azure-cosmosdb


【解决方案1】:

更新:截至5/6/15,DocumentDB 添加了一组字符串函数,包括STARTSWITHENDSWITHCONTAINS。请注意,这些函数中的大多数都不会在索引上运行,并且会强制进行扫描。

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

请在DocumentDB's feedback forum表达您的意见并投票支持此功能。

【讨论】:

    【解决方案2】:

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

    WHERE STARTSWITH(c.result, "p")
    

    【讨论】:

    • 我可以使用包含吗??请分享有关此更新的链接
    • SELECT food.id, food.description, food.tags, food.foodGroup FROM food where startswith(food.id, "03");不管用。有什么想法吗?
    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2020-01-01
    相关资源
    最近更新 更多