Cloud Datastore sunucusu, IN
desteklemiyor. NDB istemci kitaplığı, IN
ile bir sorguyu eşitlik işleçleri ile birden çok tek sorguda bölme yoluyla bu işlevselliği etkin bir şekilde sayar. Daha sonra sonuçları istemci tarafında birleştirir.
Aynı varlık, bu tek sorgunun 1 veya daha fazlasında döndürülebildiğinden, bu değerlerin bir araya getirilmesi, Key ** tarafından sipariş edilmedikçe, hesaplamasal olarak aptal hale gelir *.
İlgili, sen daha iyi anlamak için underlying caveats/limitations on cursors içine okumalısınız: IN
kullanılan değerlerin listesi statik listedir yerine zamanında belirlenir Eğer
- Because the NOT_EQUAL and IN operators are implemented with multiple queries, queries that use them do not support cursors, nor do composite queries constructed with the CompositeFilterOperator.or method.
- Cursors don't always work as expected with a query that uses an inequality filter or a sort order on a property with multiple values. The de-duplication logic for such multiple-valued properties does not persist between retrievals, possibly causing the same result to be returned more than once.
, çalışma etrafında bu hesaplamak etmektir Varlığı yazdığınızda dizinlenmiş bir Boole alanı. Bu, tek bir eşitlik filtresi kullanmanıza olanak tanır. Örneğin, bir hata izleyiciniz varsa ve açık sorunların listesini görmek istiyorsanız, sorgunuzda bir IN('new', 'open', 'assigned')
kısıtlaması kullanabilirsiniz. Alternatif olarak, is_open
adlı bir özelliği True
yerine ayarlayabilirsiniz, böylece IN
koşuluna artık gerek yoktur.
* Hesaplamayla saçma: Geçerli alınan Varlık yineleniyor olup olmadığını belirlemek için önce alınmış olan değerler sınırsız bir sayısı üzerinden doğrusal tarama yapıyor gerektirir. Ayrıca kavramsal olarak Cursors ile uyumlu değildir.
** Anahtar, bir sonraki değer kümesini almak için farklı tekli sorgular arasında geçiş yapabildiğimiz ve tüm sonuç kümesi kümesinde bir doğrusal tarama yapmaktan endişe etmememiz gerektiğinden çalışır. Bu bize çalışacak sınırlı bir veri seti sağlar.
Teşekkürler, bayrak fikriyle etrafta oynayacağım ve istediğimi yapıp yapamayacağımı göreceğim. – Vincent