mongodb - Mongo 在文档中存储过滤器
问题描述
我必须在 mongo 中存储一些模板数据并限制文档的年龄范围。下面的示例文档。
{
_id: ObjectId("unique123..."),
other data...,
filters : {
age : {
min : 18,
max : 23
}
},
{
_id: ObjectId("unique234..."),
other data...,
filters : {
age : {
min : 20,
max : 40
}
}
现在我可以查询所有模板,例如 26 岁的{ $and : [{"filters.age.min": {$lt : 26}}, {"filters.age.max": {$gt : 26}}] }
. 有没有更有效的文档存储方式?
解决方案
在对您的数据模型了解不多的情况下,我只能根据我对您文档的有限知识提出以下建议:
- “过滤器”嵌套对象在您的文档对象中似乎不合适。过滤器总是会在查询本身中设置,因此数据库中的目标文档应该与这些无关。看起来你里面只有一个元素:年龄,这似乎有点矫枉过正。我再次根据提供的信息做出假设。
- 如果每个文档都需要有一个最大和一个最小年龄,为什么不将它们都存储为根级别的“minAge”和“maxAge”呢?
然后你的查询变成
{ $and : [{"minAge": {$lt : 26}}, {"maxAge": {$gt : 26}}] }
推荐阅读
- javascript - NodeJS 调度(启动/停止)多个任务
- formula - catia 公式中的规则编辑器语法错误
- android - 如何从 Android Studio 中的本地库中排除依赖项
- android - 在“dl.bintray.com/mobisystech/maven”上出现禁止错误
- c - 请解释一下这段代码 if (input >= '0' && input <= '9')
- input - 如果猜测错误,将用户与频道断开连接 DiscordPy
- reactjs - 为什么在 setState 中获取时会进行两次网络调用?
- r - R 错误:等高线图仅适用于二维函数
- mysql - Sequelize - 是否可以限制联结表中的记录数
- design-patterns - 两个类之间的依赖