📌  相关文章
📜  Query.prototype.box() 如何在Mongoose中工作?(1)

📅  最后修改于: 2023-12-03 15:34:34.771000             🧑  作者: Mango

Mongoose中的Query.prototype.box()

在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]] } } })