0

ここで奇妙な状況に陥ったと思います。うーん、以下のようなことができないかどうかはわかりません。

正規表現を使用しない最初のクエリ

db.Books.find(
{attributes: { $all: [ 
{'value_string':'bwOBtHQx','ref':ObjectId("5199ec31d005602b8b000000")},
{'value_string':'ikigzuy','ref':ObjectId("5211d045d005609a65000000")},
{'value_boolean':true,'ref':ObjectId("5199ec7bd005602c8b000002")} ] }
}).explain()

このクエリは、正確に 1 つのレコードを生成します。

value_string フィールドに正規表現を使用した 2 番目のクエリ。

db.Books.find(
{attributes: { $all: [ 
{'value_string':'bwOBtHQx','ref':ObjectId("5199ec31d005602b8b000000")},
{'value_string':/iki.*/,'ref':ObjectId("5211d045d005609a65000000")},
{'value_boolean':true,'ref':ObjectId("5199ec7bd005602c8b000002")} ] }
}).explain()

このクエリは何もフェッチしません。私はそれが最初のものと同じ結果を示すべきだと思います

Books レコードの例。

{"id":ObjectId("xxxxxxxxxxxxxxxxx"),
 "attributes" : [ 
                 { "value_string" : "bwOBtHQx",
                   "ref" : ObjectId( "5199ec31d005602b8b000000" ) }, 
                 { "value_string" : "ikigzuy",
                   "ref" : ObjectId( "5211d045d005609a65000000" ) }, 
                 { "value_boolean" : true,
                   "ref" : ObjectId( "5199ec7bd005602c8b000002" ) } ]
}

注意:

  1. 「属性」フィールドはすでに索引付けされています。
  2. 「属性」は、多数の関係にある埋め込みドキュメントです。
  3. $in 演算子を使用すると機能しますが、探している要素と完全には一致しません。

代替手段はありますか?

4

0 に答える 0