在MongoDB的字段范围内搜索

在MongoDB的字段范围内搜索,mongodb,range,document,nosql,Mongodb,Range,Document,Nosql,我在MongoDB上有一个DB,集合如下: { "_id" : ObjectId("59a64b4cfb80146432aff6ac"), "name": "Mid Range", "end" : NumberLong("50000"), "start" : NumberLong("10000"), }, { "_id" : ObjectId("59a64b4cfb80146432aff6ac"), "name": "Hi Range",

我在MongoDB上有一个DB,集合如下:

{
    "_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是高量程的逻辑,您可以这样做

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

你甚至可以不用那美元和。您只需要设置查询以查找结果,从而使您的数字小于或等于其结束,大于或等于其开始。例如:

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

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

情况并非如此,我需要在最小和最大范围内搜索,而不是字面上的文档名称。我尝试过,但没有得到结果@Rafael Moreno的回答很好,几乎一样,但是没有明确的
$和
就足够公平了。它不起作用,因为我混淆了开始和结束,因为我假设开始小于结束。现在就改了。这个很好用!我想我在想一个更复杂的方法。