簡體   English   中英

mongoid:選擇數組中至少包含n個元素的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM