2015-01-02 18 views
5

đây là mẫu documentDB tài liệu,tìm kiếm bằng chuỗi con trong documentDB

Tôi muốn có được tất cả các tài liệu người thất bại trong một hoặc nhiều đối tượng

tôi tìm thấy một cái gì đó giống như

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

Tôi muốn để truy xuất bằng cách sử dụng C# code

{ 
    "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" 
} 

tôi đã thử thích điều này

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

Something như trên là mã của tôi Tôi nhận được, nhưng Thậm chí tôi cho pa hoặc pas hoặc vượt qua hoặc p hoặc ass hoặc là sau đó tôi cũng sẽ nhận được một cái gì đó tôi cần một chức năng của NHƯ trong SQL

Có giải pháp nào cho điều này?? Tôi cần THÍCH chức năng trong SQL để lấy dữ liệu từ documentDB

+1

Nỗ lực của bạn ở đâu? – mybirthname

+0

từ f trong client.CreateDocumentQuery (dc.SelfLink) trong đó f.subjects [0] .result == "pass" chọn f; –

+0

var result = client.CreateDocumentQuery (dc.SelfLink, "SELECT s.id là id, s.Name là Name, s.Age as Age, s.section như section, s.subjects như các đối tượng FROM students s JOIN c IN s.subjects WHERE c.result = \ "pass \" "). ToList(); Danh sách học sinh = danh sách mới (); foreach (var std in result) { học sinhThêm ((Sinh viên) std); } Một cái gì đó như trên là mã của tôi Tôi đang nhận được, nhưng Ngay cả tôi cung cấp cho pa hoặc pas hoặc vượt qua hoặc p hoặc ass hoặc như sau đó tôi cũng nhận được một cái gì đó tôi cần một chức năng LIKE trong SQL –

Trả lời

8

Cập nhật: Tính đến 5/6/15, DocumentDB thêm một tập hợp các hàm chuỗi bao gồm STARTSWITH, ENDSWITH, và CONTAINS. Xin lưu ý rằng hầu hết các chức năng này không chạy trên chỉ mục và sẽ bắt buộc quét.

Ký tự đại diện như LIKE của SQL '%%' chưa được triển khai trong DocumentDB nhưng.

Vui lòng lồng tiếng ý kiến ​​của bạn và bỏ phiếu cho tính năng này trên DocumentDB's feedback forum.

+2

Đây sẽ là một câu trả lời hay nếu nó có một ví dụ. –

5

Một số chức năng mới đã được giới thiệu trong vài tháng qua. Đối với trường hợp cụ thể, tôi nghĩ bạn có thể sử dụng:

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

Tôi có thể sử dụng không? xin vui lòng chia sẻ liên kết về bản cập nhật này –

+0

CHỌN food.id, \t food.description, \t food.tags, \t food.foodGroup TỪ thực phẩm nơi startswith (food.id, "03"); không hoạt động. bất kỳ ý tưởng? –

Các vấn đề liên quan