Thanks so much! I think I'll go with option 1 as Holger suggested.
If I understand queries and operations correctly this option will be "cheaper", because it will not require any indexed properties - query will be simply:
var query:Query = new Query(Challange);
Which will get me all games the user should play (it's his turn) and should cost just one operation (or is it one per result?).
When I update the entity, the save should cost just two ops, right?
For option 2 I would need a mechanism for exchanging the challange id, probably indexed properties player1Id and player2Id for which to query like:
var query:Query = new Query(Challange, "player1Id == ? OR player2ID == ?", "id","id");
This should also cost 1 op, but it would be "costly" to save (2+2*2 ops), right?
Or maybe just use the nextUp property like:
var query:Query = new Query(Challange, "nextUp == ?", "myId");
Which will still be a little costlier than option 1.
The only disadvantage to option 1 I see, is that I'll need to store the challange ID's of the challange entities locally (no big deal with sqlite )
Thanks again for support.