如何解决如何在Mongodb中按年龄查询?
| 如果我在MongoDB中有一个dob(出生日期)字段,如何查询出生日期小于1990年1月1日(是字符串)或小于特定年龄的所有记录?解决方法
可以将数据存储为Date()对象或ISO格式的字符串。在这两种情况下,都可以使用标准的$ gt或$ lt运算符。
,您可以将DOB日期以ISO格式-yyyymmdd-存储为简单数字,即
db.col.insert( { dob: 19910412 } )
db.col.insert( { dob: 19900708 } )
db.col.insert( { dob: 19880511 } )
db.col.insert( { dob: 19870225 } )
然后,要查找特定日期之前的所有日期,请执行以下操作:
db.col.find( { dob: { $lt: 19900101 } } )
向该字段添加索引将加快以下查询的速度:
db.col.ensureIndex( { dob: 1 } )
,我建议存储一个“真实的”日期对象而不是一个字符串。然后,您可以使用通常的比较运算符。如果您不能这样做,则可以选择存储年龄整数。后者的用处不大,因为它必须每年更新一次,但值得考虑。
编辑:一种允许您使用现有数据的替代方法是将match函数传递给collection.find()。显然,这对性能有影响,因为必须为集合中的每个对象评估函数。请参阅$ where文档。例如...
var date = function() {
return new Date(this.dob) < new Date(\'1/1/1990\');
}
db.mycollection.find(date);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。