检索Mongoid中的id数组

min*_*eow 26 ruby mongoid

你如何检索一个IDsin 数组Mongoid

arr=["id1","id2"]
User.where(:id=>arr)
Run Code Online (Sandbox Code Playgroud)

如果要检索其他属性,则可以轻松完成此操作

User.where(:nickname.in=>["kk","ll"])
Run Code Online (Sandbox Code Playgroud)

但我想知道如何在mongoid中做到这一点 - >这应该是一个非常简单和常见的操作

bow*_*ior 44

请记住,ID存储为:_id和不存储:id.有一个id帮助方法,但是当你进行查询时,你应该使用:_id:

User.where(:_id.in => arr)
Run Code Online (Sandbox Code Playgroud)

通常我发现获取一个id列表进行复杂查询很有用,所以我做了类似的事情:

user_ids = User.only(:_id).where(:foo => :bar).distinct(:_id)
Post.where(:user_id.in => user_ids)
Run Code Online (Sandbox Code Playgroud)

  • 更好的方法是使用`.distinct(:_ id)`而不是`.map(&:_ id)`.`distinct`在执行查询时起作用,这比告诉rails循环数组要快一些 (4认同)

gjb*_*gjb 5

或者干脆:

arr = ['id1', 'id2', 'id3']
User.find(arr)
Run Code Online (Sandbox Code Playgroud)