📅  最后修改于: 2023-12-03 15:34:34.771000             🧑  作者: Mango
在Mongoose中,可以使用Query对象的box()
方法来限制查询结果的边界。
query.box(area)
area
是一个由4个数值组成的数组,分别表示左下角的经度、纬度和右上角的经度、纬度。
var bounds = [[40.72, -74.02], [40.71, -74.01]];
User.find().where('location').box(bounds).exec(callback);
上述代码用于查询location
字段范围在[40.72,-74.02]
和[40.71,-74.01]
之间的用户。
box()
方法返回Query对象,因此可以链式调用其他方法。
Mongoose中的box()
方法实际上调用了MongoDB中的$box
操作符,该操作符用于在地理空间索引上查询矩形区域内的文档。
具体来说,box()
方法生成一个包含$box
操作符的MongoDB查询对象:
var bounds = [[40.72, -74.02], [40.71, -74.01]];
var query = User.find().where('location').$within.$box(bounds);
其中,$within
是MongoDB的操作符,用于在地理空间索引上查询指定区域内的文档。$box
则表示在矩形区域内查询文档。
最终生成的MongoDB查询语句如下:
db.users.find({ location: { $within: { $box: [[40.72, -74.02], [40.71, -74.01]] } } })