2016-12-19 13 views
0

すべての条件を満たす配列の要素をフィルタリングしたいと考えています。私は配列を持っている場合など

試験: [{ "organizationNameの": "strge"、 "FamilyNameで": "ラジュ"}、{ "organizationNameの": "砂"、 "FamilyNameで" : "sand"}]

同じ要素のすべての条件をフィルタリングするクエリが必要です。mongoでは$ elemMatchを使用していましたが、Google datastoreで類似のクエリを見つけられませんでした。

答えて

1

クラウドデータストアの配列値の等価フィルタは、CONTAINSフィルタと考えることができます。

ですから、membersプロパティを持つGROUP実体を持っていた場合:

SELECT * FROM Group WHERE 
    members.firstName = 'Alice' 
    AND members.lastName = 'Smith' 
    AND members.firstName = 'Bob' 
    AND members.lastName = 'Miller' 

をし、それが上記の結果を返します:

members: [ 
    { firstName: 'Alice', lastName: 'Smith' } 
    { firstName: 'Bob' , lastName: 'Miller' } 
] 

あなたが実行することができます。

ただし、このクエリでは、firstNamelastNameの値が同じmemberの値になっているかどうかはチェックされません。

members: [ 
    { firstName: 'Alice', lastName: 'Jones' } 
    { firstName: 'Bob' , lastName: 'Jones' } 
    { firstName: 'Chris', lastName: 'Miller' } 
    { firstName: 'Denise', lastName: 'Smith' } 
] 

はこれを防ぐために、あなたが最初のクエリを実行する必要があり、その後、クライアント側のフィルタリングを行うだろう。だから、このクエリはまた、のように見えるGroupエンティティを返します。

+0

あなたは私の質問を取得しませんでした。SELECT * FROM MyKind where organizationName = 'strge' AND familyName = 'sand'これは私の結果を提供していますが、organizationName = 'strge' AND familyName = 'raju 'この条件では、つまり、同じオブジェクトで条件が一致していても、異なるオブジェクトではありません。 –

+0

ああ、持っています。私は答えを更新しました。あなたの質問に今答えるかどうかを教えてください。 –

関連する問題