1

ブール値であり、パラメータとして送信される配列にドキュメントのIDが存在する場合にtrueを返すカスタムスクリプトフィールドを追加することは可能ですか?

このようなものhttps://gist.github.com/2437370

mvelでこれを行う正しい方法は何でしょうか?

更新: Imotovの回答で指定されているように動作させるのに問題があります。

マッピング:

選別:

:sort=>{:_script=>{:script=>"return friends_visits_ids.contains(_fields._id.value)", :type=>"string", :params=>{:friends_visits_ids=>["4f8d425366eaa71471000011"]}, :order=>"asc"}}}

place: { properties: { _id: { index: "not_analyzed", store: "yes" }, } }

エラーは発生しません。ドキュメントが正しく並べ替えられません。

アップデート2

ああ、そして私はこれを文書に戻します:

"sort"=>["false"]

4

1 に答える 1

5

あなたは正しい軌道に乗っていました。このリストが大きい場合は、ID のリストを配列ではなくマップに格納する方が効率的かもしれません。

"sort" : {
  "_script" : {
    "script" : "return friends_visits_ids.containsKey(_fields._id.value)",
    "type" : "string",
    "params": {
      "friends_visits_ids": { "1" : {}, "2" : {}, "4" : {}}
    }
  }
}

id フィールドが格納されていることを確認します。それ以外の場合、_fields._id.value はすべてのレコードに対して null を返します。

于 2012-04-22T15:56:13.407 に答える