我是mongodb / mongomapper的新手,无法找到答案。
我有一个带有以下字段的mongomapper类
key :author_id, Integer
key :partecipant_ids, Array
假设我有一个具有以下属性的“记录”:
{ :author_id => 10, :partecipant_ids => [10,15,201] }
我想检索涉及id为15的partecipant的所有对象。 我没有在文档中找到任何提及。
奇怪的是,以前我在做这个查询
MessageThread.where :partecipant_ids => [15]
哪个有效,但在(可能)gem / mongodb版本的一些变化之后它停止了工作。 不幸的是,我不知道我之前使用过哪个版本的mongodb和mongomapper。
答案 0 :(得分:8)
在当前版本的MongoMapper中,这将起作用:
MessageThread.where(:partecipant_ids => 15)
这也应该有用......
MessageThread.where(:partecipant_ids => [15])
...因为勇敢的自动扩展到:
MessageThread.where(:partecipant_ids => { :$in => [15] })
(见https://github.com/jnunemaker/plucky/blob/master/lib/plucky/criteria_hash.rb#L121)
我想说看看你的数据并在Mongo控制台中尝试查询,以确保你有一个有效的查询。 MongoDB查询直接转换为MM查询,除了上述(以及其他一些小的)警告。见http://www.mongodb.org/display/DOCS/Querying