23t*_*tux 4 ruby database ruby-on-rails mongodb mongoid
我有一个包含以下数据的集合:
{
"_id" : ObjectId("516b969beceaed363a000027"),
"user" : "276",
"item" : "796",
"rating" : 1,
}
Run Code Online (Sandbox Code Playgroud)
我想通过user然后在每个用户内订购,我想跳过前10条记录,并且只返回其他记录.如果用户没有10条记录,则不返回任何内容.而且我还需要反过来:按用户排序,只返回前10条记录.如果用户没有10条记录,则应返回例如6条记录.
我不知道如何在Mongoid中执行此操作,而无需调用ruby脚本.有任何想法吗?
假设您已经定义了一个映射到此集合的模型:
class MyModel
include Mongoid::Document
field :user, type: String
field :item, type: String
field :rating, type: Integer
end
Run Code Online (Sandbox Code Playgroud)
那么你要查找的查询非常简单:
# I want to order by user and then within each user, I want to skip the first 10 records, and only return the other records
MyModel.asc(:user).skip(10)
# Order by user and only return the first 10 records. If a user doesn't have 10 records, it should return for example 6 records
MyModel.asc(:user).limit(10)
Run Code Online (Sandbox Code Playgroud)
请注意两个查询都返回Mongoid Criteria对象.如果你需要实际的数组 - 调用to_a结果.
| 归档时间: |
|
| 查看次数: |
4688 次 |
| 最近记录: |