Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 查询嵌套mongo文档时使用$and_Mongodb_Mongoose - Fatal编程技术网

Mongodb 查询嵌套mongo文档时使用$and

Mongodb 查询嵌套mongo文档时使用$and,mongodb,mongoose,Mongodb,Mongoose,我有这样的猫鼬模式: let message = new Schema({ text : String, idOnSource: String, sourceName: String, selections: [ { id: Schema.ObjectId, ratingInSelection: Number, _id: false } ],

我有这样的猫鼬模式:

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个最大ratingInSelection?换句话说,每个选项最多有10条排名信息,以及排名选择编号


2-我怎样才能跳过这10个,让下一个10排在那些后面呢?

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

  db.collection_name.aggregate(
  [
    {$match:{"ratingInSelection":{$gt:10}}},
    {$limit:4},
    {$sort:{"ratingInSelection":1}},
    {$skip:10}
  ]);
注意:这里我使用排序,但我必须说在大型数据库中排序是最糟糕的选择。
$skip:用于忽略第一条记录
$limit:要返回的文档数
$sort:on field ratingInSelection,其中1指定升序排序

$gt:对于大于

的价格,我对您的概念一无所知,但对您的需求了解甚少。试试这个:

  db.collection_name.aggregate(
  [
    {$match:{"ratingInSelection":{$gt:10}}},
    {$limit:4},
    {$sort:{"ratingInSelection":1}},
    {$skip:10}
  ]);
注意:这里我使用排序,但我必须说在大型数据库中排序是最糟糕的选择。
$skip:用于忽略第一条记录
$limit:要返回的文档数
$sort:on field ratingInSelection,其中1指定升序排序

$gt:对于大于

对不起,可能“$and”在问题标题中有误导性:)我似乎不够清楚。每个消息都属于多个选择(类似于类别),在每个选择(类别)中,消息都有评级,评级由ratingInSelection表示。我想为我有id的一个选择(类别)查询排名靠前的消息。我想删除与前面提到的选择(类别)无关的任何数据。希望现在更清楚。也许你应该包括一个小的数据样本和你期望的输出,因为这对我来说还是有点清楚。还可以使用问题的链接了解更多详细信息。评论应该是为了回应人们,主要是基于你编辑你的“问题”来澄清可能不清楚/误解的观点。例如,您的上述评论是在试图回答问题的人之后发表的,但不是直接向他们发表的,因此,除非他们来找您的问题(不太可能),否则他们不知道您的意见。对不起,可能问题标题中的“$和”有误导性:)我似乎不够清楚。每个消息都属于多个选择(类似于类别),在每个选择(类别)中,消息都有评级,评级由ratingInSelection表示。我想为我有id的一个选择(类别)查询排名靠前的消息。我想删除与前面提到的选择(类别)无关的任何数据。希望现在更清楚。也许你应该包括一个小的数据样本和你期望的输出,因为这对我来说还是有点清楚。还可以使用问题的链接了解更多详细信息。评论应该是为了回应人们,主要是基于你编辑你的“问题”来澄清可能不清楚/误解的观点。例如,你的上述评论是在试图回答问题的人之后发表的,但不是直接向他发表的,因此除非他们来找你的问题(不太可能),否则他们对你的意见一无所知。