1

mongoid では、配列に少なくとも 1 つの要素を持つアイテムをクエリできます。

Item.any_in(tag_ids: [id1,id2,id3])

すべての要素が配列内にある要素を選択することもできます。

Item.all_in(tag_ids: [id1,id2,id3])

私の質問: arrayに少なくとも 要素がある要素を照会する方法はありますか?n

少なくとも2つのIDを共有するものItem.at_least(tag_ids: [id1,id2,id3], n: 2)を返すようなものをクエリしたいItem[id1,id2,id3]

ありがとう !

4

1 に答える 1

1

私は純粋な Mongoid ソリューションを知りません。MongoDB マニュアルにもそのようなクエリは見つかりませんでした: http://docs.mongodb.org/manual/reference/operator/query-array/

Mongoid と配列操作を組み合わせて使用​​します。欠点は、これらのタグが少なくとも 1 つあるすべてのアイテムが読み込まれることです。

searched_tag_ids = ['54253ad452656b1d25000000','54253adc52656b1d25010000','54253ae352656b1d25020000']
items_with_min_1_searched_tag = Item.any_in(tag_ids: searched_tag_ids).to_a
items_with_min_2_searched_tag = items_with_min_1_searched_tag.select{|item| (item.tag_ids.collect{|tag_id| tag_id.to_s} & searched_tag_ids).size >=2}
于 2014-09-26T12:28:37.810 に答える