0

J'ai un groupe d'entités avec un champ booléen qui peut être: vrai, faux, ou null (la valeur nulle réelle). J'ai besoin de récupérer toutes les entités qui ont ce champ défini à null ou faux. Je sais que GCD ne supporte pas une requête non égale mais je pense que je l'ai eu à travailler en interrogeant toutes les entités qui ont le champ inférieur à true. Cela semble fonctionner mais je ne sais pas pourquoi cela fonctionne. Est-ce que null et false sont toujours moins que vrai?Google Cloud Datastore obtient les entités qui ont un ensemble booléen à false ou null?

+0

Quelle bibliothèque client/langue utilisez-vous? –

Répondre

1

Tout ces travaux:

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() 

En Python:

>>> None < False < True 
True 
0

pas du magasin de données et supports OU = (non égal) les opérateurs en mode natif.

Les implémentations Python, de! = Sont entièrement programmatiques et ont un certain nombre de limitations lorsqu'elles sont utilisées avec d'autres opérations de requête.

La recherche avec l'opérateur IN lorsque [Faux, Aucun] est fourni provoquera le lancement et la fusion de plusieurs requêtes dans un seul résultat avec cet appel. L'opération '< True' ne trouvera aucune propriété sans valeur (valeur vide) car elle n'est pas indexée, mais trouvera des valeurs fausses et nulles et cela peut être fait dans une seule requête.

Donc, la meilleure option sera (JavaScript):

let query = db.createQuery("SomeNamespace", "SomeKind") 
    .filter("property", "<", true);