[英]What is the Rails query to select records where an array field has at least N elements
[英]mongoid: select elements that have at least n elements in array
在Mongoid中,您可以查詢數組中至少包含一個元素的項目:
Item.any_in(tag_ids: [id1,id2,id3])
您還可以選擇在數組中具有所有元素的元素:
Item.all_in(tag_ids: [id1,id2,id3])
我的問題 :有沒有辦法查詢數組中至少包含 n
元素的元素?
我想查詢類似Item.at_least(tag_ids: [id1,id2,id3], n: 2)
以返回與[id1,id2,id3]
至少共享兩個ID的任何Item
謝謝 !
我不知道純粹的Mongoid解決方案。 我還沒有在MongoDB手冊中找到這樣的查詢: http : //docs.mongodb.org/manual/reference/operator/query-array/
我會混合使用Mongoid和數組操作。 這樣做的缺點是,將加載至少包含這些標簽之一的所有項目。
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}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.