node.js - 与 MongoDB 匹配值范围

标签 node.js mongodb mongoose

我有一个针对广告商的广告系列集合。它的架构是:

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.lowerage.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/

相关文章:

node.js - 我如何使用 Loopback.io 设置 SMTP

javascript - Node.js:长时间延迟

mongodb - 获取所选文档在集合中的位置 [mongoDB]

javascript - 渲染 dust.js 模板时出现 TypeError

node.js - 有没有一种方法可以关联 Mongoose 中的两个对象 ID

javascript - 在 MongooseJS 中填充子文档数组

javascript - Nodejitsu:无法将属性添加到包描述

javascript - 如何将前端按钮链接到 Node 事件

javascript - 无法使用 Node.js 将大块数据填充到 mongodb

javascript - 如何使用 angularjs 从大数据库中正确搜索数据