在MongoDB的一系列字段中搜索

时间:2017-08-30 05:55:26

标签: mongodb range document nosql

我在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”文档。 我怎样才能做到这一点?我试图避免代码方面,但如果没有选择就可以了。

谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

你可以这样做 -

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

答案 2 :(得分:0)

为了避免确定12500是Hi Range的逻辑,你可以做类似的事情

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