ここで奇妙な状況に陥ったと思います。うーん、以下のようなことができないかどうかはわかりません。
正規表現を使用しない最初のクエリ
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" ) } ]
}
注意:
- 「属性」フィールドはすでに索引付けされています。
- 「属性」は、多数の関係にある埋め込みドキュメントです。
- $in 演算子を使用すると機能しますが、探している要素と完全には一致しません。
代替手段はありますか?