mongoid:选择数组中至少有n个元素的元素



在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和数组操作。其缺点是,所有具有至少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}

最新更新