如何在MongoDB中查找大于或等于某个时间的记录?

时间:2012-12-17 22:15:43

标签: mongodb

我有一个像这样结构的MongoDB文档:

{
"_id": ObjectId("50cf904a07ef604c8cc3d091"),
"lessons": {
    "0": {
        "lesson_name": "View and Edit Lists",
        "release_time": ISODate("2012-12-17T00:00:00Z"),
        "requires_anim": false,
        "requires_qq": true
    },
    "1": {
        "lesson_name": "Leave a Tip",
        "release_time": ISODate("2012-12-18T00:00:00Z"),
        "requires_anim": false,
        "requires_qq": true
    }
}
}

我有很多这样的文件。我想获得课程发布时间大于或等于给定时间的所有文档。这是我写的查询:

db.lessons.find({"lessons.release_time":{"$gte": ISODate("2012-12-16")}});

但这并没有归还任何文件。关于我做错了什么以及如何纠正它的任何想法。感谢。

1 个答案:

答案 0 :(得分:10)

以下是我测试的结果:

> db.testc.insert( { lessons: [
     {release_time: ISODate("2012-12-17T00:00:00Z")},
     {release_time: ISODate("2012-12-18T00:00:00Z")}
  ] } )
> db.testc.find({"lessons.release_time":{"$gte": ISODate("2012-12-16")}})
{ "_id" : ObjectId("50cfa093ab08a4592c73f927"),
  "lessons" : [
      { "release_time" : ISODate("2012-12-17T00:00:00Z") },
      { "release_time" : ISODate("2012-12-18T00:00:00Z") }
   ] }

您的查询没问题,但正如其他人所指出的那样,您的数据很可能不是数组结构。