Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
如何在node.js中构造一个特定的查询来从mongodb获取数据?_Node.js_Mongodb_Mongoose - Fatal编程技术网

如何在node.js中构造一个特定的查询来从mongodb获取数据?

如何在node.js中构造一个特定的查询来从mongodb获取数据?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我使用的是mogoosejs,有一个数据模型: var UserSchema = new Schema({ username: {type: String, required: true}, location: {type: [Number], required: true}, // [Long, Lat] created_at: {type: Date, default: Date.now}, updated_at: {type: Date, default:

我使用的是mogoosejs,有一个数据模型:

var UserSchema = new Schema({
    username: {type: String, required: true},
    location: {type: [Number], required: true}, // [Long, Lat]
    created_at: {type: Date, default: Date.now},
    updated_at: {type: Date, default: Date.now}
});
现在,在该模式上,我希望执行一个查询,以查找特定区域内的所有用户,因此我执行了以下操作:

var query = User.find({});
if(distance){
    query = query.where('location').near({ center: {type: 'Point', coordinates: [long, lat]},
    maxDistance: distance * 1609.34, spherical: true});
}
这非常好,但是现在我想在这个查询中添加另一个参数-date。所以我想找到一个特定位置内的所有用户,这些用户在过去16小时内创建了账户。。。我应该如何修改查询以获得所有这些结果?
谢谢你提供的线索

要添加日期查询,请创建一个表示16小时前的日期时间的日期对象:

var start = new Date();
start.setHours(start.getHours()-16);
现在在您的查询中使用上述内容:

// get coordinates [ <longitude> , <latitude> ]
var coords = [];
coords[0] = req.query.longitude;
coords[1] = req.query.latitude;
var criteria = { 
        "created_at": { "$gte": start }
        "location": {
            "$near": coords,
            "$maxDistance": distance * 1609.34
        }
    },
    query = User.find(criteria);

非常感谢你!还有一件事-我如何向
条件添加更多条件(如问题中提到的我的位置)?@randomuser1您可以将其添加到查询对象中,正如我在更新的答案中所示。
var start = moment().subtract(16, 'hours'),
    criteria = { "created_at": { "$gte": start }},
    query = User.find(criteria);