在一系列字段内搜索 MongoDB

Search inside a range of fields MongoDB

我在 MongoDB 上有一个数据库,其中包含这样一个集合:

{
    "_id" : ObjectId("59a64b4cfb80146432aff6ac"),
    "name": "Mid Range",
    "end" : NumberLong("50000"),
    "start" : NumberLong("10000"),
},
{
    "_id" : ObjectId("59a64b4cfb80146432aff6ac"),
    "name": "Hi Range",
    "end" : NumberLong("100000"),
    "start" : NumberLong("150000"),
}

用户输入数字验证:125000,我需要查询得到:"Hi Range"文档。 我怎样才能做到这一点?我试图避免代码方面,但如果别无选择也没关系。

谢谢!

你可以这样做 -

db.find({name:/Hi Range/}) // regular Expression.

为了避免确定 12500 是 Hi Range 的逻辑,您可以这样做

db.collection.find( { $and: [ { start: { $lte: 125000 } }, { end: { $gt: 12500 } } ] } )

你甚至可以不用 $and。您只需要设置查询以查找结果,使您的数字小于或等于其结尾且大于或等于其开头。例如:

db.collection.find({start: {$lte: 125000}, end: {$gte: 125000}})

注意:注意,如果您希望该范围包括开始和结束编号,请使用 $lte, $gte。使用 $lt 或 $gt 将不会包含它。