Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Cosmos DB'de NoSQL api'sini kullanarak sorgu vermenin yanı sıra Azure Cosmos DB sunucu tarafı SDK'sı , Azure Cosmos DB Saklı Yordamları ve Tetikleyicileri'nde iyileştirilmiş sorgular gerçekleştirmek için bir JavaScript arabirimi sağlar. Bu JavaScript arabirimini kullanmak için SQL dilini bilmeniz gerekmez. JavaScript sorgu API'si, koşul işlevlerini ECMAScript5'in dizi yerleşiklerine ve Lodash gibi popüler JavaScript kitaplıklarına benzer bir söz dizimi ile işlev çağrıları dizisine geçirerek program aracılığıyla sorgular oluşturmanıza olanak tanır. Sorgular JavaScript çalışma zamanı tarafından ayrıştırılır ve Azure Cosmos DB dizinleri kullanılarak verimli bir şekilde yürütülür.
Desteklenen JavaScript işlevleri
| Function | Açıklama |
|---|---|
chain() ... .value([callback] [, options]) |
value() ile sonlandırılması gereken zincirlenmiş bir çağrı başlatır. |
filter(predicateFunction [, options] [, callback]) |
Giriş belgelerini sonuç kümesine dahil etmek/çıkarmak için true/false döndüren bir predikat fonksiyonu kullanarak girişi filtreler. Bu işlev, SQL'deki WHERE yan tümcesine benzer şekilde davranır. |
flatten([isShallow] [, options] [, callback]) |
Her giriş öğesindeki dizileri tek bir dizide birleştirir ve düzleştirir. Bu işlev LINQ içindeki SelectMany işlevine benzer şekilde davranır. |
map(transformationFunction [, options] [, callback]) |
Her giriş öğesini bir JavaScript nesnesine veya değerine eşleyen bir dönüştürme işlevi verilen projeksiyonu uygular. Bu işlev, SQL'deki select yan tümcesine benzer şekilde davranır. |
pluck([propertyName] [, options] [, callback]) |
Bu işlev, her giriş öğesinden tek bir özelliğin değerini ayıklayan bir eşleme kısayoludur. |
sortBy([predicate] [, options] [, callback]) |
Verilen koşulu kullanarak giriş belgesi akışındaki belgeleri artan düzende sıralayarak yeni bir belge kümesi oluşturur. Bu işlev, SQL'deki ORDER BY yan tümcesine benzer şekilde davranır. |
sortByDescending([predicate] [, options] [, callback]) |
Verilen koşulu kullanarak giriş belgesi akışındaki belgeleri azalan düzende sıralayarak yeni bir belge kümesi oluşturur. Bu işlev, SQL'deki ORDER BY x DESC yan tümcesine benzer şekilde davranır. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
İç dizinin kendi içindeki elemanlarıyla birleştirme gerçekleştirir ve her iki taraftan da çıkan sonuçları demetler halinde sonuç çıktısına ekler. Örneğin, bir kişi belgesini person.pets ile birleştirmek [kişi, evcil hayvan] ikilileri üretebilir. Bu, .NET LINQ içindeki SelectMany'ye benzer. |
Koşul ve/veya seçici işlevlerine dahil edildiğinde, aşağıdaki JavaScript yapıları doğrudan Azure Cosmos DB dizinlerinde çalışacak şekilde otomatik olarak iyileştirilmiştir:
- Basit işleçler:
=+-*/%|^&==!====!==<><=>=||&&<<>>>>>~ - Nesne değişmez değeri de dahil olmak üzere değişmez değerler:
{} - var, return
Aşağıdaki JavaScript yapıları Azure Cosmos DB dizinleri için iyileştirilmemiştir:
- Denetim akışı:
ifforwhile - İşlev çağrıları
Daha fazla bilgi için bkz. Azure Cosmos DB Sunucu Tarafı JavaScript Belgeleri.
SQL'den JavaScript'e el kılavuzu
Aşağıdaki tabloda çeşitli SQL sorguları ve buna karşılık gelen JavaScript sorguları yer alır. SQL sorgularda olduğu gibi, özellikler (örneğin, item.id) büyük/küçük harfe duyarlıdır.
Uyarı
__ (çift alt çizgi), JavaScript sorgu API'sini getContext().getCollection() kullanırken kullanılan diğer addır.
| SQL | JavaScript Sorgu API'si | Açıklama |
|---|---|---|
| SEÇİN* FROM belgeleri |
__.map(function(doc) { belgeyi iade edin; }); |
Tüm belgeler, devamlılık belirteci ile sayfalandırılmış şekilde olduğu gibi gösterilir. |
| SEÇİN docs.id, docs.message AS msg, belgeler.işlemler FROM belgeleri |
__.map(function(doc) { return { ID: doc.id msg: doc.message, actions:doc.actions }; }); |
Tüm belgelerdeki kimliği, iletisini (msg olarak) ve eylemi projeksiyon yapar. |
| SEÇİN* FROM belgeleri WHERE docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998"; }); |
Belirtilen koşula sahip belgeler için sorgular: id = "X998_Y998". |
| SEÇİN* FROM belgeleri WHERE ARRAY_CONTAINS(docs.Etiketler, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Etiketler özelliğine ve Etiketlere sahip belgeler için sorgular, 123 değerini içeren bir dizidir. |
| SELECT docs.id, docs.message AS msg FROM belgeleri WHERE docs.id="X998_Y998" |
__.chain() .filter(function(doc) { return doc.id ==="X998_Y998"; }) .map(function(doc) { return { ID: doc.id msg: doc.message }; }) .value(); |
Kimlik = "X998_Y998" koşuluna sahip belgeler için sorgular yapılır ve ardından kimlik ve ileti (msg olarak adlandırılır) projelendirilir. |
| SELECT VALUE etiketi FROM belgeleri JOIN etiketi IN belgeleri. Etiketler ORDER BY docs._ts |
__.chain() .filter(function(doc) { return doc.Etiketler && Array.isArray(doc.Etiketler); }) .sortBy(function(doc) { doc._ts döndür; }) .pluck("Etiketler") .flatten() .value() |
Dizi özelliği olan belgeler için filtre uygular, Etiketler ve elde edilen belgeleri _ts zaman damgası sistem özelliğine göre sıralar ve ardından Etiketler dizisini projelendirir ve düzleştirir. |
Sonraki Adımlar
Azure Cosmos DB'de saklı yordamları, tetikleyicileri ve kullanıcı tanımlı işlevleri yazma ve kullanma hakkında daha fazla bilgi edinin:
- JavaScript Sorgu API'sini kullanarak saklı yordamlar ve tetikleyiciler yazma
- Azure Cosmos DB saklı yordamları, tetikleyicileri ve kullanıcı tanımlı işlevlerle çalışmak
- Azure Cosmos DB'de saklı yordamları, tetikleyicileri, kullanıcı tanımlı işlevleri kullanma
- Azure Cosmos DB JavaScript sunucu tarafı API başvurusu
- JavaScript ES6 (ECMA 2015)