0

真、偽、またはnull(実際のヌル値)のいずれかのブール値フィールドを持つ複数のエンティティがあります。このフィールドがnullまたはfalseに設定されているすべてのエンティティを取得する必要があります。私は、GCDが等しくないクエリをサポートしていないことを知っていますが、フィールドがtrueより小さいすべてのエンティティをクエリすることによって動作すると思います。 動作するようですが、なぜ動作するのかわかりません。 nullとfalseは常にtrueより小さいですか?Google Cloud Datastoreは、ブール値がfalseまたはnullに設定されているエンティティを取得しますか?

+0

? –

答えて

1

これらの作業のいずれか:Pythonで

test_query = Test.query(Test.bool != True).fetch() 
test_query = Test.query(Test.bool.IN([False, None])).fetch() 
test_query = Test.query(Test.bool < True).fetch() 

>>> None < False < True 
True 
0

データストアは、ネイティブORをサポートし、=(等しくない)演算子ありません!。

!=のPython実装は、完全にプログラム的であり、別のクエリ操作で使用すると制限があります。

[False、None]を指定した場合、IN演算子で検索すると、複数のクエリがこの呼び出しで1つの結果として起動され、マージされます。

'< True'操作では、インデックスが作成されていないため、値のないプロパティ(空のval)は検出されませんが、falseおよびnull値が検出されます。これは単一のクエリで実行できます。

ので、最良のオプションは、(JavaScriptの上)になります:

使用しているクライアントライブラリ/言語
let query = db.createQuery("SomeNamespace", "SomeKind") 
    .filter("property", "<", true);