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

Rai*_*ard 5 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
    }
}
}
Run Code Online (Sandbox Code Playgroud)

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

db.lessons.find({"lessons.release_time":{"$gte": ISODate("2012-12-16")}});
Run Code Online (Sandbox Code Playgroud)

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

pau*_*kow 11

这是我测试的结果:

> 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") }
   ] }
Run Code Online (Sandbox Code Playgroud)

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