21

そのため、ドキュメントに多数の配列を含むデータベースがあります。を使用して、クエリが 1 つ以上の配列要素と完全に一致するドキュメント全体を検索したいと考えています$in

したがって、文書構造:

{
  "_id": "76561198045636214",
  "timecreated": 1311148549,
  "unusual": [
    {
      "id": 1960169991,
      "original_id": 698672623,
      "defindex": 313,
      "_particleEffect": 19
    },
    {
      "id": 965349033,
      "original_id": 931933064,
      "defindex": 363,
      "_particleEffect": 6
    }
  ]
}

私はこのようなドキュメントをたくさん持っています。ドキュメントが 1 つの配列エントリに defindex 313 と _particleEffect 19 の両方を含む配列を持っている場所を見つけたいと思っています$elemMatch

また、多くの異なる配列の組み合わせを一度に検索できるようにしたいので、たとえば、defindex が 363 で _particleEffect が 19 または 6 の配列を使用する必要があります$in

ただし、$elemMatch を$inクエリに入れようとすると、配列では機能しないため、elemMatch は関係ありません。私はそれをすることができませんでした。

これまでの私の試み:

{unusual:{$all:[{"defindex":{"$in":[361,378]}},{"_particleEffect":{"$in":[30,0]}}]}}

(私の最近の試みは、単にうまくいきません。)

{"$and":[{"unusual.defindex":{"$in":[361,378]}},{"unusual._particleEffect":{"$in":[[30,36]]}}]}

$elemmatchととの組み合わせをたくさん試し$andました。

(異常な配列内の項目を検索しますが、配列の区切りを無視します。IE は、条件を満たすために複数の項目が使用されるドキュメントを返します (したがって、一致する defindex を持つ少なくとも 1 つの項目と、効果を持つ 1 つの項目。))

私はこれに1日半を費やし、本当に遠くまで来て、私のものとほとんど同じであるが、$in一部の言及が欠けていた質問を見つけました. -> MongoDB: 複数の配列要素に一致

tl;dr:$in +を効果的に行う方法はあり$elemMatchますか?

私のやや不適切な形式の投稿を読んでくれてありがとう、ありがとう。

4

3 に答える 3

1

https://jira.mongodb.org/browse/SERVER-3544

うーん、たくさん掘り下げましたが、それが私の質問に答えているようです。現時点では $in $elemmatch を実行できません。

于 2013-11-13T02:32:02.893 に答える