我有一个广告系列广告系列。它的架构是:
NullPointerException
我需要运行具有特定年龄的查询,并返回年龄介于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
的文档,但它们似乎只是单向工作(所以我可以指定一个范围并匹配一个值,但是我需要指定一个值并匹配范围)。
有什么建议吗?
答案 0 :(得分:0)
您可以先在该值的下限创建一个查询,按降序对结果进行排序,并从结果中获取最高文档。将该文档与上限进行比较,如果匹配,则该文档的范围包含该年龄。例如:
var age = 23;
var ads = db.campaign.find({ "age.lower": {"$lte": age } }).sort({"age.lower": -1}).limit(1);
if (ads != null) {
var result = ads[0];
if (result.age.upper > age) {
return result;
} else {
return null;
}
}