поиск по подстроке в documentDB

это образец документа documentDB,

Я хочу получить все документы, которые не прошли по одному или нескольким предметам

Я нашел что-то вроде

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

Я хочу получить с помощью кода С#

{
  "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, или, как тогда, я также должен получить что-то, мне нужна функциональность LIKE в SQL

Есть ли какое-нибудь решение для этого?? Мне нужна функция LIKE в SQL для извлечения данных из documentDB.


person satish kumar V    schedule 02.01.2015    source источник
comment
Где ваше усилие?   -  person mybirthname    schedule 02.01.2015
comment
из f в client.CreateDocumentQuery‹student›(dc.SelfLink), где f.subjects[0].result == pass select f;   -  person satish kumar V    schedule 02.01.2015
comment
var result = client.CreateDocumentQuery‹dynamic›(dc.SelfLink, SELECT s.id как id, s.Name как имя, s.Age как возраст, s.section как раздел, s.subjects как предметы ОТ студентов s ПРИСОЕДИНЯЙТЕСЬ к s.subjects ГДЕ c.result = \pass\).ToList(); Список‹Студент› студентов = новый Список‹Студент›(); foreach(var std in result) { student.Add((Student)std); } Что-то вроде приведенного выше - это мой код, который я получаю, но даже я даю pa или pas или pass или p или ass или, как тогда, я также должен получить что-то, мне нужна функциональность LIKE в SQL   -  person satish kumar V    schedule 02.01.2015
comment
Не добавляйте это как комментарий, никто не будет читать это так. Добавьте его в вопрос.   -  person mybirthname    schedule 02.01.2015
comment
спасибо @mybirthname я новичок в этом   -  person satish kumar V    schedule 02.01.2015


Ответы (2)


Обновление: по состоянию на 5/6/15, DocumentDB добавил набор строковых функций, включая STARTSWITH, ENDSWITH и CONTAINS. Обратите внимание, что большинство этих функций не работают с индексом и вызывают принудительное сканирование.

Подстановочные знаки, такие как SQL LIKE '% %', не были реализованы в DocumentDB пока.

Выскажите свое мнение и проголосуйте за эту функцию на форуме обратной связи DocumentDB.

person Andrew Liu    schedule 05.01.2015

За последние несколько месяцев были введены некоторые новые функции. Для вашего конкретного случая, я думаю, вы можете использовать:

WHERE STARTSWITH(c.result, "p")
person ciobi    schedule 27.08.2015
comment
Могу ли я использовать содержит?? пожалуйста, поделитесь ссылкой на это обновление - person satish kumar V; 27.08.2015
comment
ВЫБЕРИТЕ food.id, food.description, food.tags, food.foodGroup FROM food, где начинается с (food.id, 03); не работает. Есть идеи? - person satish kumar V; 27.08.2015