2015-01-02 2 views
5

это образец documentDB документ,поиск по подстроке в 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); 
} 

Что-то вроде выше мой код, я получаю, но даже я даю ра или па или передать или р или осел, или как то и я должен получить то, что мне нужно функциональность как в SQL

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

+1

Где вы пытаетесь? – mybirthname

+0

from f in client.CreateDocumentQuery (dc.SelfLink) где f.subjects [0] .result == "pass" select f; –

+0

var result = client.CreateDocumentQuery (dc.SelfLink, "SELECT s.id как id, s.Name as Name, s.Age as Age, s.section как раздел, s.subjects as subject FROM students s JOIN c IN s.subjects WHERE c.result = \ "pass \" "). ToList(); Список students = new Список (); foreach (var std in result) { students.Add ((Student) std); } Что-то вроде выше мой код Я получаю, но даже я даю pa или pas или pass или p или ass или как тогда также я должен получить что-то мне нужна функция LIKE в SQL –

ответ

8

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

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

Просьба высказать свое мнение и проголосовать за эту функцию на DocumentDB's feedback forum.

+2

Это был бы хороший ответ, если бы он содержал пример. –

5

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

WHERE STARTSWITH(c.result, "p") 
+0

Могу ли я использовать содержит? пожалуйста, поделитесь ссылкой об этом обновлении –

+0

ВЫБЕРИТЕ food.id, \t food.description, \t food.tags, \t food.foodGroup из пищи, где StartsWith (food.id, "03"); не работает. Есть идеи? –

Смежные вопросы