我有一组数字[111, 444, 777]
我想查看这两个文件
{
_id: 1,
lookHere: {rangeLow: 333, rangeHigh: 555}
},
{
_id: 2,
lookHere: {rangeLow: 222, rangeHigh: 333}
}
我想编写一个只返回第一个文档的查询,因为我的数字数组包括444,介于333和555之间。
是否有可以在mongo / mongoose中实现此结果的查询?
1 个答案:
答案 0 :(得分:1)
您需要$or
个查询。您可以将源数组.map()
放入$or
的参数:
var inputs = [111, 444, 777];
collection.find({
"$or": inputs.map( n => ({
"lookHere.rangeLow": { "$lt": n },
"lookHere.rangeHigh": { "$gt": n }
}) )
})
这基本上是要查看Low值是否小于且High是否大于每个当前元素,并且当任何匹配这两个条件时返回true。
请注意,除非另有说明,否则所有MongoDB查询参数都是隐式AND条件。