我使用mongodb,我正在尝试提出请求,但我需要帮助。我需要查询包含字段“country”的用户集合。
示例:
{
"name" : "John",
"country" : "FR"
}
例如,我希望从法国获得30位用户。 如果数据库中有来自法国的30个或更多用户,那么它可以从法国返回30个用户。 如果只有来自法国的12个用户(少于30个),我希望得到这12个用户和18个其他用户(有30个用户),无论在哪个国家/地区。
我想知道是否可以使用经典请求或者我必须使用MapReduce
答案 0 :(得分:0)
我相信你不能在一个查询中这样做。
country: "FR"
如果此数字大于或等于30,则使用cursor.limit
方法获得正好30个文档。如果此数字小于30,则将所有文档放在country: 'Fr'
的位置,并使用.apply()
和{{3}将country
不等于FR
的另一个查询扩展结果方法。
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());
}