让我从一个基本示例开始解释这个问题。
给定一个集合,
[
{
"name": "A",
"range": {
"min": 10,
"max": 100
}
},
{
"name": "B",
"range": {
"min": 3,
"max": 50
}
}
]
并给出一个数字N
。如果我想查找范围包含数字N
的文档。我可以使用以下查询,
db.collection.find({
"range.min": {
$lte: N
},
"range.max": {
$gte: N
}
})
效果很好。
但是如果范围变成多个,我不知道如何进行查询。
集合的示例,
[
{
"name": "A",
"ranges": [
{
"min": 10,
"max": 20
},
{
"min": 30,
"max": 50
},
{
"min": 80,
"max": 100
}
]
},
{
"name": "B",
"ranges": [
{
"min": 3,
"max": 10
},
{
"min": 20,
"max": 50
}
]
}
]
最佳答案
$elemMatch
运算符可用于解决此问题。
以下查询有效,
db.collection.find({
"ranges": {
$elemMatch: {
"min": {
$lte: N
},
"max": {
$gte: N
}
}
}
})
关于database - 如何使用 MongoDB 通过传递一个必须至少在文档的特定范围之一内的数字来查找文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69150030/