Ruby 是否使用mongomapper在数组字段中查找包含元素的文档?

Ruby 是否使用mongomapper在数组字段中查找包含元素的文档?,ruby,mongodb,mongomapper,Ruby,Mongodb,Mongomapper,我是mongodb/mongomapper的新手,无法找到答案 我有一个包含以下字段的mongomapper类 key :author_id, Integer key :partecipant_ids, Array 假设我有一个具有以下属性的“记录”: { :author_id => 10, :partecipant_ids => [10,15,201] } 我想检索id为15的partecippant涉及的所有对象。 我在文件中没有发现任何提及 奇怪的是,之前我在做这个查询 M

我是mongodb/mongomapper的新手,无法找到答案

我有一个包含以下字段的mongomapper类

key :author_id, Integer
key :partecipant_ids, Array
假设我有一个具有以下属性的“记录”:

{ :author_id => 10, :partecipant_ids => [10,15,201] }
我想检索id为15的partecippant涉及的所有对象。 我在文件中没有发现任何提及

奇怪的是,之前我在做这个查询

MessageThread.where :partecipant_ids => [15]
这是可行的,但在gem/mongodb版本中(可能)进行了一些更改之后,它就停止了工作。
不幸的是,我不知道我以前使用的是哪个版本的mongodb和mongomapper。

在当前版本的mongomapper中,这将起作用:

MessageThread.where(:partecipant_ids => 15)
这也应该起作用

MessageThread.where(:partecipant_ids => [15])
…因为勇气自动扩展到:

MessageThread.where(:partecipant_ids => { :$in => [15] })
(见附件)


我想说的是查看您的数据并在Mongo控制台中尝试查询,以确保您有一个正常的查询。MongoDB查询直接转换为MM查询,除了上面的(和一些其他小的)警告。请参见

您现在使用的rails/mongomapper/mongodb等的哪个版本?rails 3.0.10、mongo(1.5.0)、mongo_mapper(0.10.1)也可以查看大胆的测试,它们可能比源代码更清晰:奇怪的事实。使用MessageThread.where(:partecippant_id=>['15'])它可以工作。出于某种原因,它现在被当作字符串数组处理?我100%确信在升级之前它使用的是整数。您可以尝试将:typecast=>“Integer”添加到:partecippant_id键中。我不确定这是否会打破许多人的联想。