Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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
Javascript mongodb查询:使用字段上的筛选器获取N个结果_Javascript_Mongodb_Mongodb Query - Fatal编程技术网

Javascript mongodb查询:使用字段上的筛选器获取N个结果

Javascript mongodb查询:使用字段上的筛选器获取N个结果,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,我使用mongodb,我试图提出请求,但我需要帮助。我需要查询我的用户集合,其中包含一个字段“country” 例如: { "name" : "John", "country" : "FR" } 例如,我想从法国获得30个用户。 如果数据库中有30个或更多来自法国的用户,则可以返回30个来自法国的用户。 如果只有12个用户(少于30个)来自法国,我想得到这12个用户和18个其他用户(30个),不管是哪个国家 我想知道是否可以使用一个经典请求,或者我必须使用MapReduce,我

我使用mongodb,我试图提出请求,但我需要帮助。我需要查询我的用户集合,其中包含一个字段“country”

例如:

{
    "name" : "John",
    "country" : "FR"
}
例如,我想从法国获得30个用户。 如果数据库中有30个或更多来自法国的用户,则可以返回30个来自法国的用户。 如果只有12个用户(少于30个)来自法国,我想得到这12个用户和18个其他用户(30个),不管是哪个国家


我想知道是否可以使用一个经典请求,或者我必须使用MapReduce,我相信你不能在一个查询中完成这项工作

  • 获取带有
    国家/地区:“FR”
  • 如果该数字大于或等于30,则使用该方法获得正好30个文档。如果该数字小于30,则获取
    country:'Fr'
    所在的所有文档,并使用和方法使用另一个查询扩展结果,其中
    country
    不等于
    Fr

    var count=db.collection.count({“country”:“FR”});
    var结果=[];
    如果(计数>=30){
    result=db.collection.find({“country”:“FR”}).limit(30.toArray();
    }
    如果(计数<30){
    result=db.collection.find({“country”:“FR”}).toArray();
    result.push.apply(result,db.collection.find({“country”:{“$ne”:“FR”}}).limit(30 count.toArray());
    }
    

我相信你不能在一个查询中完成这一点

  • 获取带有
    国家/地区:“FR”
  • 如果该数字大于或等于30,则使用该方法获得正好30个文档。如果该数字小于30,则获取
    country:'Fr'
    所在的所有文档,并使用和方法使用另一个查询扩展结果,其中
    country
    不等于
    Fr

    var count=db.collection.count({“country”:“FR”});
    var结果=[];
    如果(计数>=30){
    result=db.collection.find({“country”:“FR”}).limit(30.toArray();
    }
    如果(计数<30){
    result=db.collection.find({“country”:“FR”}).toArray();
    result.push.apply(result,db.collection.find({“country”:{“$ne”:“FR”}}).limit(30 count.toArray());
    }
    

谢谢你的回答,但这是我不想做的。如果有人知道如何在一个要求,我感兴趣@GuillaumeP你不能在一个查询中完成这项工作。谢谢你的回答,但这是我不想做的。如果有人知道如何在一个要求,我感兴趣@GuillaumeP您不能在一个查询中完成此操作。
var count = db.collection.count({ "country": "FR" });
var result = [];

if (count >= 30) {
    result = db.collection.find({ "country": "FR" }).limit(30).toArray();
}

if (count < 30 ) { 
    result = db.collection.find({ "country": "FR" }).toArray();
    result.push.apply(result, db.collection.find({ "country": { "$ne": "FR" }}).limit(30-count).toArray());
}