我有 mongo 文档:
{
id:1
time:[
1,
2,
10
]
}
{
id:2
time:[
1,
4,
8,
10
]
}
我想找到时间在 3 到 5 之间或 7 到 9 之间的所有文档(id 为 2 的文档)。我不知道该怎么做。
我尝试:
mongo.find( $or : [{time:{$gte:3, $lte:5}}, {time:{$gte:7, $lte:9}}] )
mongo 返回 id 为 1 和 2 的文档,但我需要 id2 和 time[4, 8]。
如何将条件应用于数组的每个元素,而不是整个数组?
附:大小数组“时间”可能不同
最佳答案
如果您使用“时间”数组作为另一个存储数组的占位符,那么之前对 elemMatch 的注释应该会对您有所帮助,因为这应该可以处理其他数字搜索,例如考试成绩。
但是,如果您使用它来处理日期/时间等,那么您可能最好使用 unix 时间戳进行存储,因为这是通过整数完成的,并且很容易在 mongodb 中搜索和存储,并且很容易获得支持对于大多数编程语言来说。 (php 中的示例:mktime() 和 DateTime::getTimestamp())。
关于mongodb - 在 mongo 中的日期之间的数组中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990948/