在一系列字段内搜索 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}})
我在 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}})