我有一个针对广告商的广告系列集合。它的架构是:
var campaignSchema = new mongoose.Schema({
name: String,
sponsor: String,
[...]
target: {
age: {
lower: Number,
upper: Number
},
gender: String,
locations: Array, // [ { radius: '', lon: '', lat: '' } ]
activities: Array
}
});
我需要运行特定年龄的查询,并返回该年龄在 age.lower
和 age.higher
之间的所有广告系列。
我已阅读 $gt
和 $lt
的文档,但是它们似乎只能以一种方式工作(因此我可以指定一个范围并匹配一个值,但我需要指定一个值并匹配一个范围)。
有什么建议吗?
最佳答案
抱歉,我误解了这个问题,我现在明白了。
db.collection.find( { "age.lower": { $lt: value1 }, "age.upper": { $gt: value1 } } );
例如,如果您的范围是 25 到 40,并且 value1 是 30,则 25 < 30 和 40 > 30 —— 匹配!
如果您使用与 20、25 相同的范围!< 20 -- 将不匹配。
关于node.js - 与 MongoDB 匹配值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809307/