使用$和查询嵌套的mongo文档时

时间:2016-02-09 16:32:42

标签: mongodb mongoose

我有像这样的猫鼬模式:

let message = new Schema({
    text      : String,
    idOnSource: String,
    sourceName: String,
    selections: [
        {
            id: Schema.ObjectId,
            ratingInSelection: Number,
            _id: false
        }
    ],
    ownerIdOnSource: String,
    createdAt : {type: Date, default: Date.now}
});

可以看出,每条消息属于许多选择,每条消息在每个选择中都有一个评级  1-首先我想知道,如何在查看“selection.id”的情况下构建查询以查找10 max ratingInSelection?换句话说,每个选择的10个最大排名消息以及rankingInSelection数字?

2-我怎样才能跳过那些10并排在接下来的10位?

1 个答案:

答案 0 :(得分:0)

我对你的概念一无所知,但对你的需求知之甚少。试试这个:

  db.collection_name.aggregate(
  [
    {$match:{"ratingInSelection":{$gt:10}}},
    {$limit:4},
    {$sort:{"ratingInSelection":1}},
    {$skip:10}
  ]);

注意:我在这里使用排序,但我必须说在大型数据库中排序是最糟糕的选择。
$ skip :忽略第一条记录
$ limit :不。要返还的文件
$ sort :on field ratingInSelection 其中1指定升序分类
$ gt :大于