1

いくつかの映画とそのジャンルを取得しようとしていますが、ジャンルの配列に「スリラー」というジャンルを含むレコードは除外しています。

「スリラー」のジャンル キー自体を無視するだけでなく、その映画の結果全体を押しつぶすにはどうすればよいですか? 現在のクエリでは、ジャンルの配列からスリラーが削除されていますが、親オブジェクト (映画) は表示されたままです。

クエリエディターでの現在の作業は次のとおりです。 http://tinyurl.com/d2g54lj

[{
  'type':'/film/film',
  'limit':5,
  'name':null,
  '/film/film/genre': [],
  '/film/film/genre!=': "Thriller",
}]​
4

2 に答える 2

1

The answer provided is correct, but changes some other stuff in the query too. Here's the direct equivalent to the original query:

[{
  "type":          "/film/film",
  "limit":         5,
  "name":          null,
  "genre": [],
  "x:genre": {"name":"Thriller",
              "optional":"forbidden"},
}]​

The important part is the "optional":"forbidden". The default property used is "name", but we need to specify it explicitly when we use a subclause (to allow us to specify the "optional" keyword). Using ids instead of names, as @kook did, is actually more reliable, so that's an improvement, but I wanted people to be able to see the minimum necessary to fix the broken query.

We can abbreviate the property name to "genre" from "/film/film/genre" since "type":"/film/film" is included (we also never need to use /type/object for properties like /type/object/name).

于 2011-12-03T19:35:36.467 に答える
0

私自身の質問に答えます。

したがって、秘訣は(しかしそうではない) 演算子を使用しない!=ことですが、実際にはそれを反転させて、次のように「|=」(いずれかの) 演算子を「禁止」とともに使用します。

[{
  'type':'/film/film',
  'limit':5,
  'name':null,
  '/film/film/genre': [{
    "id":       null,
    "optional": true
    }],
  "forbid:/film/film/genre": {
    "id|=": [
      "/en/thriller",
      "/en/slapstick"
    ],
    "optional": "forbidden"
  }
}]​

次の投稿に感謝します。

Freebase クエリ - 特定の値の除外

于 2011-12-03T15:19:44.190 に答える